RandomAccess介面理解

2021-08-20 22:10:28 字數 1250 閱讀 1173

randomaccess 是乙個標記介面,用於標明實現該介面的list支援快速隨機訪問,主要目的是使演算法能夠在隨機和順序訪問的list中表現的更加高效。

我們可以簡單的看下collections下的binarysearch方法的原始碼:

public static 

int

binarysearch(list<? extends

t> list,

t key, comparator<? super

t> c)

return -(low + 1);

// key not found

}

indexedbinarysearch 方法是直接通過get來訪問元素

arraylist 的get方法:

public 

e get(int index)

elementdata 是陣列,可以直接索引快速找到

二、iteratorbinarysearch方法:

private static 

int

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是雙鏈表結構

public 

e get(int index)

/**

* returns the (non-null) node at the specified element index.

*/node node(int index) else

}

總之:randomaccess 是乙個標記介面,用於標明實現該介面的list支援快速隨機訪問,主要目的是使演算法能夠在隨機和順序訪問的list中表現的更加高效。

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...