JavaList

Java List接口詳解

繼承關(guān)系

List接口繼承自Collection接口,是Java集合框架中的有序集合。

Collection ← List

List接口新增方法

相比Collection接口,List增加了以下主要方法:

  1. 位置訪問(wèn)操作
  • E get(int index)
  • E set(int index, E element)
  • void add(int index, E element)
  • E remove(int index)
  1. 搜索操作
  • int indexOf(Object o)
  • int lastIndexOf(Object o)
  1. 列表迭代器
  • ListIterator<E> listIterator()
  • ListIterator<E> listIterator(int index)
  1. 范圍操作
  • List<E> subList(int fromIndex, int toIndex)

List主要實(shí)現(xiàn)類

  1. ArrayList

    • 基于動(dòng)態(tài)數(shù)組實(shí)現(xiàn)
    • 隨機(jī)訪問(wèn)快,插入刪除慢
    • 非線程安全
  2. LinkedList

    • 基于雙向鏈表實(shí)現(xiàn)
    • 插入刪除快,隨機(jī)訪問(wèn)慢
    • 實(shí)現(xiàn)了Deque接口
  3. Vector

    • 線程安全的動(dòng)態(tài)數(shù)組
    • 方法同步,性能較低
    • 有子類Stack
  4. CopyOnWriteArrayList

    • 線程安全變體
    • 寫(xiě)時(shí)復(fù)制機(jī)制
    • 適合讀多寫(xiě)少場(chǎng)景

實(shí)踐中遇到的問(wèn)題及解決方案

  1. 問(wèn)題:ArrayList在并發(fā)環(huán)境下修改會(huì)拋出ConcurrentModificationException
    解決方案:使用Collections.synchronizedList包裝或改用CopyOnWriteArrayList

  2. 問(wèn)題:LinkedList的隨機(jī)訪問(wèn)性能差
    解決方案:對(duì)于需要頻繁隨機(jī)訪問(wèn)的場(chǎng)景,改用ArrayList

面試常見(jiàn)問(wèn)題

  1. Q: ArrayList和LinkedList的區(qū)別?
    A: 主要區(qū)別在于底層實(shí)現(xiàn)(數(shù)組vs鏈表)和性能特點(diǎn)(隨機(jī)訪問(wèn)快vs插入刪除快)

  2. Q: Vector為什么被棄用?
    A: 雖然線程安全但性能差,推薦使用Collections.synchronizedList或CopyOnWriteArrayList替代

  3. Q: List的subList方法使用時(shí)要注意什么?
    A: subList是原列表的視圖,對(duì)子列表的修改會(huì)影響原列表,且原列表結(jié)構(gòu)變化會(huì)導(dǎo)致子列表操作拋出異常

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 集合概述 Java集合框架標(biāo)準(zhǔn)化了Java處理對(duì)象組的方式。Java集合框架在JDK1.2版本提出,在JDK1.5...
    零度沸騰_yjz閱讀 2,708評(píng)論 0 35
  • Java 容器類 - List sschrodingder 2019/03/21 參考 dreamcatcher-...
    sschrodinger閱讀 303評(píng)論 1 0
  • List集合介紹 List集合概述 ??List集合是一個(gè)元素有序(每個(gè)元素都有對(duì)應(yīng)的順序索引,第一個(gè)元素索引為0...
    Hughman閱讀 434評(píng)論 0 1
  • 深入ArrayList源碼分析(JDK1.8) Java 集合系列源碼分析文章: 深入TreeMap源碼解析(JD...
    一角錢(qián)技術(shù)閱讀 256評(píng)論 0 0
  • 集合框架體系概述 為什么出現(xiàn)集合類?方便多個(gè)對(duì)象的操作,就對(duì)對(duì)象進(jìn)行存儲(chǔ),集合就是存儲(chǔ)對(duì)象最常用的一種方法. 數(shù)組...
    acc8226閱讀 915評(píng)論 0 1

友情鏈接更多精彩內(nèi)容