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