欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java 中RandomAccess接口源碼分析

 更新時間:2017年05月28日 08:59:08   投稿:lqh  
這篇文章主要介紹了java 中RandomAccess接口源碼分析的相關(guān)資料,需要的朋友可以參考下

java 中RandomAccess接口源碼分析

RandomAccess是一個接口,位于java.util包中。

這個接口的作用注釋寫的很清楚了:

/**
 * Marker interface used by <tt>List</tt> implementations to indicate that
 * they support fast (generally constant time) random access. The primary
 * purpose of this interface is to allow generic algorithms to alter their
 * behavior to provide good performance when applied to either random or
 * sequential access lists.
 * List實現(xiàn)所使用的標(biāo)記接口,用來表明實現(xiàn)了這些接口的list支持快速(通常是常數(shù)時間)隨機(jī)訪問。
 * 這個接口的主要目的是允許一般的算法更改它們的行為,以便在隨機(jī)或者順序存取列表時能提供更好的性能。
 * <p>The best algorithms for manipulating random access lists (such as
 * <tt>ArrayList</tt>) can produce quadratic behavior when applied to
 * sequential access lists (such as <tt>LinkedList</tt>). Generic list
 * algorithms are encouraged to check whether the given list is an
 * <tt>instanceof</tt> this interface before applying an algorithm that would
 * provide poor performance if it were applied to a sequential access list,
 * and to alter their behavior if necessary to guarantee acceptable
 * performance.
 * 操作隨機(jī)訪問列表(如ArrayList)的最佳算法在應(yīng)用于順序存取列表時,有可能產(chǎn)生二次項行為。
 * 泛型算法列表鼓勵在將某個算法應(yīng)用于順序存取列表可能導(dǎo)致差的性能之前,先檢查給定的列表是否是這個接口的一個實例,
 * 并在需要時去改變這些算法的行為以保證性能。
 * <p>It is recognized that the distinction between random and sequential
 * access is often fuzzy. For example, some <tt>List</tt> implementations
 * provide asymptotically linear access times if they get huge, but constant
 * access times in practice. Such a <tt>List</tt> implementation
 * should generally implement this interface. As a rule of thumb, a
 * <tt>List</tt> implementation should implement this interface if,
 * for typical instances of the class, this loop:

 * 隨機(jī)訪問和順序存取之間的界限通常是模糊的。例如,一些List實現(xiàn)在變得很大時會導(dǎo)致漸進(jìn)的非線性訪問時間,但實際上是常量訪問時間。
 * 這樣的List實現(xiàn)通常都應(yīng)該實現(xiàn)該接口。
 * 一般來說,某個List實現(xiàn)如果(對某些典型的類的實例來說)滿足下面的條件,就應(yīng)該實現(xiàn)這個接口:循環(huán)
 * <pre>
 *   for (int i=0, n=list.size(); i &lt; n; i++)
 *     list.get(i);
 * </pre>
 * runs faster than this loop:
 * 比下面的循環(huán)運行速度快。
 * <pre>
 *   for (Iterator i=list.iterator(); i.hasNext(); )
 *     i.next();
 * </pre>
 *
 * <p>This interface is a member of the
 * <a href="{@docRoot}/../technotes/guides/collections/index.html" rel="external nofollow" >
 * Java Collections Framework</a>.
 * 這個接口是Java集合框架的一員。
 * @since 1.4
 */
public interface RandomAccess {
}

 RandomAccess是一個空接口,而空接口的作用一般是起到一個標(biāo)識的作用。

通俗點講,就是判斷一個list是否實現(xiàn)了RandomAcess接口,如果實現(xiàn)了,采用下面所示的簡單的for循環(huán)進(jìn)行訪問速度比較快:

for (int i=0, n=list.size(); i &lt; n; i++)
   list.get(i);

如果未實現(xiàn)RandomAcess接口,則采用下面的iterator循環(huán)訪問速度比較快。

for (Iterator i=list.iterator(); i.hasNext(); )
   i.next();

判斷使用instanceof,即

 if (list instanceof RandomAccess) 

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • 冒泡排序的原理及java代碼實現(xiàn)

    冒泡排序的原理及java代碼實現(xiàn)

    冒泡排序法:關(guān)鍵字較小的記錄好比氣泡逐趟上浮,關(guān)鍵字較大的記錄好比石塊下沉,每趟有一塊最大的石塊沉底。算法本質(zhì):(最大值是關(guān)鍵點,肯定放到最后了,如此循環(huán))每次都從第一位向后滾動比較,使最大值沉底,最小值上升一次,最后一位向前推進(jìn)
    2016-02-02
  • SpringAOP中的動態(tài)代理技術(shù)深入解析

    SpringAOP中的動態(tài)代理技術(shù)深入解析

    這篇文章主要介紹了SpringAOP中的動態(tài)代理技術(shù)深入解析,spring默認(rèn)使用JDK動態(tài)代理實現(xiàn)AOP,類如果實現(xiàn)了接口,spring就會用JDK動態(tài)代理實現(xiàn)AOP,如果目標(biāo)類沒有實現(xiàn)接口,spring則使用Cglib動態(tài)代理來實現(xiàn)AOP,需要的朋友可以參考下
    2024-01-01
  • 簡單了解4種分布式session解決方案

    簡單了解4種分布式session解決方案

    這篇文章主要介紹了簡單了解4種分布式session解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • Java關(guān)于后端怎么去接收Date、LocalDateTime類型的參數(shù)詳解

    Java關(guān)于后端怎么去接收Date、LocalDateTime類型的參數(shù)詳解

    這篇文章主要介紹了java關(guān)于后端怎么去接收Date、LocalDateTime類型的參數(shù),文中有詳細(xì)的代碼流程,對我們學(xué)習(xí)或工作有一定的參考價值,需要的朋友可以參考下
    2023-06-06
  • MyBatis-Plus 查詢返回實體對象還是map

    MyBatis-Plus 查詢返回實體對象還是map

    這篇文章主要介紹了MyBatis-Plus 查詢返回實體對象還是map,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • JAVA多線程中join()方法的使用方法

    JAVA多線程中join()方法的使用方法

    雖然關(guān)于討論線程join()方法的博客已經(jīng)非常極其特別多了,但是前幾天我有一個困惑卻沒有能夠得到詳細(xì)解釋,當(dāng)系統(tǒng)中正在運行多個線程時,join()到底是暫停了哪些線程,所以本文詳細(xì)解釋一下希望能幫助到和我有相同困惑的同學(xué)
    2021-05-05
  • Java?17新特性詳細(xì)講解與代碼實例

    Java?17新特性詳細(xì)講解與代碼實例

    這篇文章主要給大家介紹了關(guān)于Java?17新特性詳細(xì)講解與代碼實例的相關(guān)資料,Java 17是2021年9月發(fā)布的最新版本,其中包含了很多新特性和改進(jìn),這些新特性和改進(jìn)將進(jìn)一步提高 Java 語言的性能和可用性,需要的朋友可以參考下
    2023-09-09
  • 23種設(shè)計模式(20)java中介者模式

    23種設(shè)計模式(20)java中介者模式

    這篇文章主要為大家詳細(xì)介紹了23種設(shè)計模式之java中介者模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 基于JavaMail API收發(fā)郵件的方法

    基于JavaMail API收發(fā)郵件的方法

    這篇文章主要介紹了基于JavaMail API收發(fā)郵件的方法,實例分析了javamail的使用方法與相關(guān)注意事項,非常具有實用價值,需要的朋友可以參考下
    2015-07-07
  • javaweb設(shè)計中filter粗粒度權(quán)限控制代碼示例

    javaweb設(shè)計中filter粗粒度權(quán)限控制代碼示例

    這篇文章主要介紹了javaweb設(shè)計中filter粗粒度權(quán)限控制代碼示例,小編覺得還是挺不錯的,需要的朋友可以參考。
    2017-10-10

最新評論