RandomAccess僅僅是一個標記接口,就像是Serialable。編程
一、標記了該接口的類更適合因而用數組遍歷形式來遍歷集合。例如ArrayList\Vector。一般是使用數組來完成的,數組這種數據結構適合於隨機訪問,可是不適合於隨機插入和刪除數組
二、而沒有標記該標記接口的類,更適合使用Iterator的形式,來遍歷,由於一般是用雙向鏈表完成的。經過數據結構裏的知識知道雙向鏈表適合於隨時刪除和插入,可是不適合於隨即訪問。這是二者不一樣的根本緣由。數據結構
這一點很重要,在編寫程序時,這也算是一種提升性能的方法。dom
一般能夠採用這種方式編程: 性能
if(collections instanceof RandomAccess){
for(int i=0;i<collections.size;i++){接口
Object target=collections[i];get
}it
}else{io
Iterator iterator=collections.iterator();List
while(iterator.hasNext()){
Object target = iterator.next();
}
}