java.util.List学习笔记
概述
在Java中,List是一種特殊的集合結(jié)構(gòu),即:List是一種有序的集合。在List接口的實(shí)現(xiàn)中,需要提供根據(jù)列表下表對(duì)元素進(jìn)行操作的方法,包括:插入,刪除,查詢和修改等;
List一般允許重復(fù)的元素存在。判定元素是否相同的規(guī)則仍然為:e1.equals(e2)。在用戶實(shí)現(xiàn)接口的過程中 ,可以指定List是否允許重復(fù)元素。對(duì)于不允許重復(fù)元素的列表而言,在插入相同的元素時(shí),推薦拋出一個(gè)運(yùn)行時(shí)異常。但是Java中,并不推薦實(shí)現(xiàn)一個(gè)不允許重復(fù)的列表,因?yàn)檫@種類型更接近于java.util.Set。
在List中,除了Collection中提供的接口外,還提供了List特定的接口,主要提供List根據(jù)下標(biāo)進(jìn)行訪問服務(wù)。需要注意的一點(diǎn)是:根據(jù)下標(biāo)進(jìn)行列表中的元素訪問的操作的執(zhí)行時(shí)間可能與實(shí)現(xiàn)呈正相關(guān)關(guān)系。因此,在不清楚接口的具體實(shí)現(xiàn)時(shí),建議使用迭代器進(jìn)行列表中元素的定位訪問操作。
在List中提供了一中特殊的迭代器,稱為:列表迭代器。其除了常規(guī)迭代器的服務(wù)外,還提供插入、設(shè)值和雙向訪問操作。
一些列表的實(shí)現(xiàn)對(duì)于其中包含的元素有一定的限制。例如:一些列表不允許包含null元素,有的列表對(duì)其中元素的類型進(jìn)行限制。當(dāng)添加一個(gè)不滿足限定條件的元素到列表中時(shí),則拋出一個(gè)unchecked exception,通常為:NullPointerException和ClassCastException。
方法介紹
在本節(jié)中,將針對(duì)List中的特殊接口介紹,從Collection中繼承的接口介紹見java.util.Collection學(xué)習(xí)筆記。
boolean addAll(int index, Collection<? extends E> c);將集合c中所有的元素插入到列表的指定位置(可選操作)。如果在指定位置后仍有元素,需要將指定位置后的所有元素向右進(jìn)行順移。集合c中的元素在列表中位置與c的迭代器返回元素的順序相同。當(dāng)在插入過程中,集合c發(fā)生了改變,可能導(dǎo)致不可預(yù)期的結(jié)果,常見于將列表本身插入到列表中。
E get(int index);返回列表中特定位置的元素。當(dāng)不滿足index < 0 || index >= size()時(shí),拋出IndexOutOfBoundsException。
E set(int index, E element);將列表中的特定位置的元素替換為element(可選操作)。
void add(int index, E element);在列表特定位置插入元素element(可選操作)。需要將本位置后的所有元素向右平移一位。
E remove(int index);刪除列表特定位置的元素(可選操作)。將本位置后的所有元素左移一位,并返回被刪除的元素。
int indexOf(Object o);查找元素第一次在列表中的出現(xiàn)位置。如果列表中不包含該元素,則返回-1。即返回最小的滿足條件(o==null ? get(i)==null : o.equals(get(i)))的i,如果沒有,則返回-1。
int lastIndexOf(Object o);查找元素最后一次在列表中的出現(xiàn)位置。如果列表中不包含該元素,則返回-1。即返回最大的滿足條件(o==null ? get(i)==null : o.equals(get(i)))的i,如果沒有,則返回-1。
ListIterator<E> listIterator();獲取一個(gè)可以雙向訪問列表元素的迭代器,包括:查詢,修改和獲取迭代器當(dāng)前位置。列表迭代器的詳細(xì)信息將在其它文章中介紹。
ListIterator<E> listIterator(int index);獲取一個(gè)從列表特定位置開始的,可以雙向訪問列表元素的迭代器。index指定了第一次調(diào)用next()方法應(yīng)當(dāng)返回的元素下標(biāo)。而調(diào)用previous()應(yīng)當(dāng)返回下標(biāo)為index-1的元素。
List<E> subList(int fromIndex, int toIndex);返回當(dāng)前列表的一個(gè)子視圖,其由列表中fromIndex<=i<toIndex的元素構(gòu)成。當(dāng)fromIndex==toIndex時(shí),則返回一個(gè)空列表。返回的子列表仍可以由原列表進(jìn)行訪問,即:子列表中對(duì)的非結(jié)構(gòu)化修改會(huì)直接反映到原列表中,反之亦然。子列表支持原列表中所有的操作。這個(gè)方法消除了對(duì)列表提供特定范圍操作方法的需求。因?yàn)槿魏我粋€(gè)對(duì)列表的操作均可以用作對(duì)列表一個(gè)特定范圍子列表的操作。例如,list.subList(from, to).clear();可以用于刪除列表特定范圍內(nèi)的元素。并且Collection中所有的方法對(duì)一個(gè)子列表均適用。
如果該方法返回的列表在方法的執(zhí)行過程中由于其它方法的調(diào)用導(dǎo)致了結(jié)構(gòu)化的改變(即:列表的大小發(fā)生了改變,或者調(diào)用了影響迭代器返回結(jié)果的方法,如:將列表本身添加到列表中等),則會(huì)導(dǎo)致這個(gè)方法產(chǎn)生不可預(yù)期的結(jié)果。
轉(zhuǎn)載于:https://www.cnblogs.com/leipeng-whale/p/6019041.html
總結(jié)
以上是生活随笔為你收集整理的java.util.List学习笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux centos 7安装 apa
- 下一篇: scrapy-1.2.1安装失败之解决方