JDK源碼-RandomAccess

RandomAccess

  • List實現(xiàn)了該接口,說明該實現(xiàn)類的數(shù)據(jù)可以進行隨機訪問,不需要保證順序性.比如ArrayList實現(xiàn)了該接口,LinkedList沒有實現(xiàn)該接口.
  • 隨機訪問列表使用循環(huán)遍歷,順序訪問列表使用迭代器遍歷纱皆。

JDK定義

/**
 * 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.
 *
 * <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.
 *
 * <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:
 * <pre>
 *     for (int i=0, n=list.size(); i &lt; n; i++)
 *         list.get(i);
 * </pre>
 * runs faster than this loop:
 * <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">
 * Java Collections Framework</a>.
 *
 * @since 1.4
 */
  • List的實現(xiàn)類使用的標記接口,一般來標識該實現(xiàn)類能夠支持快速隨機訪問.
  • 接口存在的目的:繼承該接口的實現(xiàn)類,能夠允許一般的算法來更改他們的行為,yibian在隨機或者循環(huán)訪問列表時,能夠提供更好的性能.
  • 對于隨機訪問的列表(ArrayList)的操作方法應用到順序訪問的列表(LinkedList),將會產生二次項行為(個人理解應該是額外的操作吧).所以,對不同訪問類型的列表,我們需要采用最為合適的算法.
  • 總結來講,隨機訪問類型的列表進行l(wèi)oop遍歷的時間更短,順序訪問類型的列表通過Iterator進行遍歷的時間更短.
    參考文章:RandomAccess 接口使用
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市沪哺,隨后出現(xiàn)的幾起案子樊零,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件逼泣,死亡現(xiàn)場離奇詭異药磺,居然都是意外死亡告组,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門癌佩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來木缝,“玉大人,你說我怎么就攤上這事围辙∥业” “怎么了?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵姚建,是天一觀的道長矫俺。 經常有香客問我,道長桥胞,這世上最難降的妖魔是什么恳守? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮贩虾,結果婚禮上催烘,老公的妹妹穿的比我還像新娘。我一直安慰自己缎罢,他們只是感情好伊群,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布考杉。 她就那樣靜靜地躺著,像睡著了一般舰始。 火紅的嫁衣襯著肌膚如雪崇棠。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天丸卷,我揣著相機與錄音枕稀,去河邊找鬼。 笑死谜嫉,一個胖子當著我的面吹牛萎坷,可吹牛的內容都是我干的。 我是一名探鬼主播沐兰,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼哆档,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了住闯?” 一聲冷哼從身側響起瓜浸,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎比原,沒想到半個月后插佛,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡春寿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年朗涩,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绑改。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡谢床,死狀恐怖,靈堂內的尸體忽然破棺而出厘线,到底是詐尸還是另有隱情识腿,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布造壮,位于F島的核電站渡讼,受9級特大地震影響,放射性物質發(fā)生泄漏耳璧。R本人自食惡果不足惜成箫,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望旨枯。 院中可真熱鬧蹬昌,春花似錦、人聲如沸攀隔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至明刷,卻和暖如春婴栽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背辈末。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工愚争, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人本冲。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓准脂,卻偏偏與公主長得像,于是被迫代替她去往敵國和親檬洞。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內容

  • 一.線性表 定義:零個或者多個元素的有限序列沟饥。也就是說它得滿足以下幾個條件:??①該序列的數(shù)據(jù)元素是有限的添怔。??②...
    Geeks_Liu閱讀 2,693評論 1 12
  • Java源碼研究之容器(1) 如何看源碼 很多時候我們看源碼, 看完了以后經常也沒啥收獲, 有些地方看得懂, 有些...
    駱駝騎士閱讀 987評論 0 22
  • 前言 今天來介紹下LinkedList,在集合框架整體框架一章中贤旷,我們介紹了List接口广料,LinkedList與A...
    嘟爺MD閱讀 3,579評論 11 37
  • 在經過一次沒有準備的面試后,發(fā)現(xiàn)自己雖然寫了兩年的android代碼幼驶,基礎知識卻忘的差不多了艾杏。這是程序員的大忌,沒...
    猿來如癡閱讀 2,834評論 3 10
  • 本文參加#未完待續(xù)盅藻,就要表白#活動购桑,本人承諾,文章內容為原創(chuàng)氏淑,且未在其他平臺發(fā)表過勃蜘。 我是來自山間的水,一抹溪流假残,...
    山榆何多閱讀 293評論 3 18