list取第乙個元素 資料結構 List 介面

2021-10-11 14:45:15 字數 3899 閱讀 5611

簡介

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...