JAVA 集合的子介面List

2021-08-25 14:36:37 字數 3093 閱讀 6690

list:列表

此介面對應的實現類的特點都是:有序的,可以重複的

重複與否與元素的equals方法有關

常用方法:

void add(int index,e element)--------將某一元素,插入到此集合的某一下標index處  

e get(int index)--------------返回指定下標上的元素

int indexof(object obj)--------------返回指定元素出現的位置,如果沒有返回-1。 

e set(int index, e newelement)  -------------使用新元素newelement替換下標index上的元素,返回原元素。

boolean remove(int index)--------------移除此集合中下標為index的元素 (注意在元素的類中重寫equals方法)  

list sublist(int fromindex,int endindex)------ 擷取此集合中的一部分,即擷取子集,從fromindex到endindex,包前不包後

ps:此方法在堆中產生了乙個內部類sublist集合物件,此集合物件引用的是父集的一部分。修改子集,會影響父集。

int lastindexof(object obj)------------返回此集合指定元素obj最後一次出現的下標,找不到返回-1

陣列與集合之間的轉換

1、集合轉陣列

object[ ] toarray()

e[ ] toarray(e[ ] e)

2、陣列轉集合

list arrays.aslist(t……a)  

注意:陣列轉型的集合,不能進行增刪操作,否則會出現執行時異常,可以進行替換操作,但是會對陣列變數有影響。  

如果想要成功進行增刪操作,可以將元素存入新的集合中。 

(1)迭代器的作用是用來遍歷集合元素。是乙個介面,collection繼承了該介面,提供了乙個方法iterator iterator()

(2)collection的實現類使用內部類定義了迭代器子類。

(3)迭代器提供了統一的方法,用於遍歷集合元素

常用方法:

boolean hasnext()--------------- 判斷集合中是否有下乙個元素

e next()----------------- 取出集合中的下乙個元素

remove(object obj)

在使用迭代器對集合進行遍歷時,不能使用集合的移除方法移除集合的元素.

必須使用迭代器自己提供的移除方法才行。

增強for迴圈——foreach迴圈

for(元素型別 變數名:要遍歷的集合或者陣列)

與經典for迴圈的區別:

(1)增強for迴圈中無法使用下標。

(2)經典for迴圈可以使用下標,跟下標有關的邏輯,隨便寫 

(1)arraylist------底層是基於動態陣列的資料結構。是有存放順序的。

(2)linkedlist------底層是基於雙鏈表的資料結構。每乙個儲存單元都涉及到其他兩個引用。   

arraylist和linkedlist比較:在執行get()/set()時,arraylist的效率高,linkedlist需要移動指標,效率低在增加和刪除          時,linkedlist效率高, arraylist效率低(需要擴容,移動元素) 

ps:當然,在元素的數量大的情況下,區別才明顯               

(3)vector:是乙個比較古老的集合型別,執行緒安全但是效率特別低,雖然安全也不建議使用。

public class testiterator02 

} system.out.println(list);

}}

comparable介面:

如何定義集合元素之間的大小之分?我們需要在定義元素型別時,實現comparable介面,實現介面內的

compareto(e e)。實現此介面的型別的物件之間可以進行比較。

方法:int compareto(e e):

比較規則:

(1)this與e比較,this-e

如果大於零,返回大於0的乙個數

如果等於零,返回0

如果小於零,返回小於0的乙個數

按照公升序排序

(2)e-this,降序排序

工具類collections

提供了乙個sort(collection c)方法,對集合裡的元素進行排序

comparator比較器介面:

如果元素型別已經實現了comparable介面,定義了預設的比較規則,之後再想換其他比較規則時,不修改原始碼。

可以利用比較器介面來重新定義比較規則。

方法:int compare(e o1,e o2);

比較規則:

公升序:o1-o2

降序:o2-o1

public class testsort02 

};collections.sort(list, my);

/**collections.sort(list, new comparator()

};);----------------進一步修改*/

system.out.println(list);

/**max():找到自然排序後的最大值*/

string e1= collections.max(list);

system.out.println(e1);

/**reverse():對集合元素進行反轉*/

collections.reverse(list);

system.out.println(list);

/*shuffle():對集合元素進行打亂順序,混洗*/

collections.shuffle(list);

system.out.println(list);

}}

集合 List介面

有序的 collection 也稱為序列 此介面的使用者可以對列表中每個元素的插入位置進行精確地控制。使用者可以根據元素的整數索引 在列表中的位置 訪問元素,並搜尋列表中的元素 與 set 不同,列表通常允許重複的元素 void add int index,e element e remove in...

Java 集合框架 List 集合

arraylist,linkedlist,vector,stack是list的4個實現類。arraylist 是乙個陣列佇列,相當於動態陣列。它由陣列實現,隨機訪問效率高,隨機插入 隨機刪除效率低。linkedlist 是乙個雙向鍊錶。它也可以被當作堆疊 佇列或雙端佇列進行操作。linkedlist...

集合之list介面

有序,可重複 void add int index,e element boolean addall int index,collection extends e c listli new arraylist li.add as li.add xz li.add qw system.out.prin...