簡介
list介面繼承自collection介面,是collection三大延伸介面之一。list中的元素都是有序的,並且都支援用索引訪問。同時list中的元素允許重複。
public inte***ce listextends collection
方法
// 替換所有 unaryoperator會另開一篇講解
default void replaceall(unaryoperatoroperator)
}// 排序
@suppresswarnings()
default void sort(comparator super e> c)
}// 根據索引查詢
e get(int index);
// 根據索引設定元素
e set(int index, e element);
// 根據索引位置新增
void add(int index, e element);
// 根據索引位置刪除
e remove(int index);
// 獲取元素在集合中的第乙個索引
int indexof(object o);
// 獲取元素在集合中最後乙個索引
int lastindexof(object o);
// 獲取乙個列表迭代器
listiteratorlistiterator();
// 從某個位置開始構建迭代器
listiteratorlistiterator(int index);
// 擷取某一段構建集合
listsublist(int fromindex, int toindex);
相對於collection介面來說,list介面增加了很多索引操作,並且不僅僅提供普通iterator迭代器,並且提供listiterator列表迭代器,雙向操作更加方便
abstractlist 抽象類
abstractlist實現list介面,從名字就可以看出該類也是抽象類,提供了對列表類操作的一些基本實現。
public abstract class abstractlistextends abstractcollectionimplements list
建構函式
protected abstractlist()
屬性
// 修改次數
protected transient int modcount = 0;
未實現的方法
abstract public e get(int index);
已實現的方法abstractlist中除了極少數方法沒有被子類覆蓋(如equals、hashcode),大部分方法都被子類覆蓋
新增
public boolean add(e e)
public void add(int index, e element)
public boolean addall(int index, collection extends e> c)
return modified;}
private void rangecheckforadd(int index)
add(e e)呼叫add(int index, e element),注意直接呼叫會拋異常,子類必須覆蓋此方法
設值
public e set(int index, e element)
同樣需要注意,直接呼叫會拋異常,子類必須覆蓋此方法
刪除
public e remove(int index)
protected void removerange(int fromindex, int toindex) else
// 沒有找到返回-1
return -1;}
// 按索引查詢
public int lastindexof(object o) else
// 沒有找到返回-1
return -1;
}
清空
public void clear()
hashcode方法
public int hashcode()
equals方法
public boolean equals(object o)
// 能到這至少有乙個迭代完,有乙個沒迭代完就返回false
return !(e1.hasnext() || e2.hasnext());
}
迭代器
// 獲取迭代器
public iteratoriterator()
// 獲取列表迭代器
public listiteratorlistiterator()
// 從某一位置構建迭代器
public listiteratorlistiterator(final int index)
內部類itr
private class itr implements iterator
public e next()
public void remove()
final void checkforcomodification()
}
此內部類主要是實現iterator迭代器基本功能
內部類listitr
private class listitr extends itr implements listiterator
public boolean hasprevious()
public e previous()
public int nextindex()
public int previousindex()
public void set(e e)
public void add(e e)
}
此內部類繼承itr並實現listiterator,經典的介面卡模式,並且擴充套件itr,使其擁有雙向迭代功能
外部內sublist
class sublistextends abstractlist
sublist類繼承自abstractlist抽象類,因此它的例項列表可以使用abstractlist的各種已經實現的方法。
外部類randomaccesssublist
class randomaccesssublistextends sublistimplements randomaccess
randomaccesssublist類繼承自sublist,並實現了randomaccess介面,randomaccess介面只是表示此類的例項支援隨機訪問。
js中取陣列第乙個元素
var a 1,2,2,3,4 console.log a a.shift console.log a 5 1,2,2,3,4 4 2,2,3,4 pop 刪除原陣列最後一項,並返回刪除元素的值 如果陣列為空則返回undefined shift 刪除原陣列第一項 相當於lpop push 將引數新增...
python 刪除list中的第乙個元素
目錄 1.python 刪除list中元素三種方式 一般 1.pop 2.del 3.remove 2.巢狀陣列刪除存在的問題 1.預設刪除最後乙個元素.pop 中也可以傳入引數,為list的索引 2.pop 接收的是索引,無參的情況下刪除的是最後乙個元素 典型的棧的特性 3.pop 存在返回值,返...
LinkedList中獲取第乙個元素方法的差異
linkedlist像arraylist一樣實現了基本的list介面,但是它執行某些操作 在list的中間插入和移除 時比arraylist更高效,但在隨機訪問操作方面卻要遜色一些。linkedlist還新增了可以使其用作棧,佇列或雙端佇列的方法。linkedlist中 getfirst 和elem...