摘要:
在java中集合主要分為兩類,collection和map兩個大的接口,collection又分為list和set接口,這里記錄list接口中常用的方法。
list的特點(diǎn):
list存儲的數(shù)據(jù)是有序的,可重復(fù)的。
list的主要實(shí)現(xiàn)類:
ArrayList(可以看作是一個動態(tài)的數(shù)組,底層會自動擴(kuò)容,線程不安全,查詢效率高,插入效率低)
LinkedList(底層是雙向鏈表,查詢效率低,插入效率高)
vector(線程安全,基本不使用)
list中常用的方法(按功能分,可以從增、刪、改、查,插,長度,遍歷幾個方面描述)
增:
void add(Object obj) // 在末尾增加一個obj元素
boolean addAll(int index, Collection ele) // 在指定的位置處添加所有的集合元素到集合中刪:
remove(int index) 或者 remove(Object obj),分別表示移除指定索引的元素和移除指定值的元素,前者是List接口獨(dú)有的,后者是Collection共有的。改:
Object set(int index,Object ele) // 設(shè)置指定index位置的元素為ele查:
Object get(int index) // 獲取指定index位置的元素插:
void add(int index, Object ele) // 在指定位置上增加ele元素長度
int size()第一次出現(xiàn)元素的索引和最后一次出現(xiàn)的索引
indexOf(Object obj) 和lastIndexOf(Object obj)-
遍歷:有三種
- 迭代器Iterator
- 增強(qiáng)for
- 普通for或者while
demo示例
public class ArrayList{
@Test
public void test1(){
ArrayList list = new ArrayList();
/*在末尾添加*/
list.add(123); // 添加元素
list.add("abc");
list.add(123) ;// 體現(xiàn)了list的可重復(fù)性
list.add(new Date();
/*在指定位置插入*/
list.add(1, "BB"); // 在第二個位置上添加BB元素
/*將一個集合的所有元素添加到一個集合中*/
List list2 = Arrays.asList(1,2,3); // 通過數(shù)組工具類創(chuàng)建一個新的List
list.addAll(list2); // 此時(shí)的集合中會多出三個元素1,2,3
/*將一個集合作為一個整體添加到一個集合中*/
List list3 = Arrays.asList("a","b","c");
list.add(list3) // 將集合list3作為一個整體添加到list集合中
/*返回123首次出現(xiàn)的索引*/
int index = list.indexOf(123);
/*返回123最后一次出現(xiàn)的位置*/
index lastIndex = list.lastIndexOf(123);
/*從集合中刪除元素*/
Object o = list.remove(0) // 刪除第一個位置的元素, 這里刪除是指按照索引刪除,其實(shí)add元素的時(shí)候比如123,其實(shí)添加的是包裝類的對象,會自動裝箱,因此要移除指定值的元素,我們需要手動裝箱,如list.remove(new Integer(123));就會移除指定值的123
/**改*/
list.set(1, "cc"); // 將位置為2的元素修改為CC
/*使用Iterator遍歷*/
Iterator iterator = list.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
/*使用增強(qiáng)for*/
for(Object ob: List){
System.out.println(ob);
}
/*普通for*/
for(int i = 0; i < list.size(); i++){
System.out.println(list.get(i));
}
}
}