日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java.util -- List接口

發布時間:2023/12/20 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java.util -- List接口 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

List本身是Collection接口的子接口,具備了Collection的所有方法。現在學習List體系特有的共性方法,查閱方法發現List的特有方法都有索引,這是該集合最大的特點。

?

List有序(元素存入集合的順序和取出的順序一致),元素都有索引。元素可以重復。

?? |--ArrayList底層的數據結構是數組,線程不同步,ArrayList替代了Vector,查詢元素的速度非常快。

?? |--LinkedList底層的數據結構是鏈表,線程不同步,增刪元素的速度非常快。

?? |--Vector底層的數據結構就是數組,線程同步的,Vector無論查詢和增刪都巨慢。

?

1,添加:

??? add(index,element) :在指定的索引位插入元素。

??? addAll(index,collection) :在指定的索引位插入一堆元素。

2,刪除:

??? remove(index) :刪除指定索引位的元素。 返回被刪的元素。

3,獲取:

??? Object get(index) :通過索引獲取指定元素。

??? int indexOf(obj) :獲取指定元素第一次出現的索引位,如果該元素不存在返回-1;

????????????????? ? 所以,通過-1,可以判斷一個元素是否存在。

??? int lastIndexOf(Object o) :反向索引指定元素的位置。

??? List subList(start,end) :獲取子列表。

4,修改:

??? Object set(index,element) :對指定索引位進行元素的修改。

5,獲取所有元素:

??? ListIterator listIterator():list集合特有的迭代器。

?

List集合支持對元素的增、刪、改、查。

?

List集合因為角標有了自己的獲取元素的方式: 遍歷。

for(int x=0; x<list.size(); x++){

? sop("get:"+list.get(x));

}

在進行list列表元素迭代的時候,如果想要在迭代過程中,想要對元素進行操作的時候,比如滿足條件添加新元素。會發生.ConcurrentModificationException并發修改異常。

導致的原因是:

集合引用和迭代器引用在同時操作元素,通過集合獲取到對應的迭代器后,在迭代中,進行集合引用的元素添加,迭代器并不知道,所以會出現異常情況。

如何解決呢?

既然是在迭代中對元素進行操作,找迭代器的方法最為合適.可是Iterator中只有hasNext,next,remove方法.通過查閱的它的子接口,ListIterator,發現該列表迭代器接口具備了對元素的增、刪、改、查的動作。

?

ListIteratorList集合特有的迭代器

ListIterator it = list.listIterator;//取代Iterator it = list.iterator;

可變長度數組的原理:

當元素超出數組長度,會產生一個新數組,將原數組的數據復制到新數組中,再將新的元素添加到新數組中。

ArrayList:是按照原數組的50%延長。構造一個初始容量為 10 的空列表。

Vector:是按照原數組的100%延長。

?

注意:對于list集合,底層判斷元素是否相同,其實用的是元素自身的equals方法完成的。所以建議元素都要復寫equals方法,建立元素對象自己的比較相同的條件依據。

?

LinkedList的特有方法。

addFirst();

addLast();

在jdk1.6以后。

offerFirst();

offerLast();

?

getFirst():獲取鏈表中的第一個元素。如果鏈表為空,拋出NoSuchElementException;

getLast();

在jdk1.6以后。

peekFirst();獲取鏈表中的第一個元素。如果鏈表為空,返回null。

peekLast();

?

removeFirst():獲取鏈表中的第一個元素,但是會刪除鏈表中的第一個元素。如果鏈表為空,拋出NoSuchElementException

removeLast();

在jdk1.6以后。

pollFirst();獲取鏈表中的第一個元素,但是會刪除鏈表中的第一個元素。如果鏈表為空,返回null。

pollLast();

?

轉載于:https://www.cnblogs.com/wqing7/p/5896019.html

總結

以上是生活随笔為你收集整理的java.util -- List接口的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。