randomaccess 是乙個標記介面,用於標明實現該介面的list支援快速隨機訪問,主要目的是使演算法能夠在隨機和順序訪問的list中表現的更加高效。
我們可以簡單的看下collections下的binarysearch方法的原始碼:
public staticint
binarysearch(list<? extends
t> list,
t key, comparator<? super
t> c)
return -(low + 1);
// key not found
}
indexedbinarysearch 方法是直接通過get來訪問元素
arraylist 的get方法:
publice get(int index)
elementdata 是陣列,可以直接索引快速找到
二、iteratorbinarysearch方法:
private staticint
iteratorbinarysearch(list<? extends
t> l,
t key, comparator<? super
t> c)
return -(low + 1);
// key not found
}
iteratorbinarysearch中listiterator來查詢相應的元素
linkedlist get()方法:
checkelementindex() 方法是檢查是否角標越界,note(index)方法是查詢方法,可以看出linkedlist是雙鏈表結構
publice get(int index)
/**總之:randomaccess 是乙個標記介面,用於標明實現該介面的list支援快速隨機訪問,主要目的是使演算法能夠在隨機和順序訪問的list中表現的更加高效。* returns the (non-null) node at the specified element index.
*/node node(int index) else
}
RandomAccess介面的作用
通過collections的binarysearch 方法我們可以看到裡面有用到randomaccess,它先判斷集合是否實現了randomaccess從而判斷是使用indexedbinarysearch 方法還是iteratorbinarysearch 方法,也就是說這兩個方法才是決定arrayl...
集合類 關於RandomAccess介面的研究
randomaccess介面是list 實現所使用的標記介面,用來表明其支援快速 通常是固定時間 隨機訪問。此介面的主要目的是允許一般的演算法更改其行為,從而在將其應用到隨機或連續訪問列表時能提供良好的效能。在對list特別的遍歷演算法中,要盡量來判斷是屬於randomaccess 如arrayli...
Java學習手冊 RandomAccessFile
1 方式 1 randomaccessfile提供了乙個可以從檔案中讀取位元組的方法 int read 該方法會從檔案中讀取乙個byte 8位 填充到int的低八位,高24位為0,返回值範圍正數0 255,如果返回 1表示讀取到了檔案末尾。每次讀取後自動移動檔案指標,準備下次讀取。2 randoma...