Java基礎學習之集合 List

2021-08-20 02:45:46 字數 3338 閱讀 1617

1.addall   removeall   retainall

collection c1 = new arraylist();

c1.add("a");

c1.add("b");

c1.add("c");

c1.add("d");

collection c2 = new arraylist();

c2.add("a");

c2.add("b");

c2.add("c");

c2.add("y");

1.addall

public static void fun1新增(collection c1, collection c2)
2.removeall

public static void fun刪除(collection c1, collection c2)
c1與c2的交集是 a,b,c 故此 c1的最終結果為[d]

3.retainall

public static void fun3取交(collection c1, collection c2)
public static void fun() 

} }

遍歷集合時要先判斷是否集合中具有下乙個元素

public static void fun2() 

}

1.arraylist  和 linkedlist 的區別

1.arraylist是實現了基於動態陣列的資料結構,linkedlist基於鍊錶的資料結構。

2.對於隨機訪問get和set,arraylist覺得優於linkedlist,因為linkedlist要移動指標。

3.對於新增和刪除操作add和remove,linedlist比較佔優勢,因為arraylist要移動資料。

arraylist 特點

陣列實現: 查詢按角標, 增刪時式是把要刪除或增加的元素 後面的所有元素

向前移動或者向後移動

linkedlist 特點

查詢慢 增刪快

鍊錶實現: 查詢時,系統會先看這個元素離鍊錶的最近端開始查詢.

增刪時 鍊錶的元素 要保證能找到自己上乙個和下乙個元素,需要儲存位址,就能

找到元素位值,就相當於插入到了鏈中,鏈中其他元素位址不會改變

2.

add(int index,object obj)

set(index,obj)

get(int index)

remove(int index)

public static void fun1()
public static void fun2()
要注意的是remove() 括號裡可以填具體元素 也可以填集合索引值, 當集合為數字時 系統不會自動裝箱,會把具體的數值元素當成索引值.

vector 的遍歷

public static void fun3() 

}

list list  = new arraylist<>();

list.add("a");

list.add("b");

list.add("c");

list.add("d");

1.採用 iterator 迭代器遍歷時新增元素

public static void fun錯誤新增(list list ) 

}

上面的迭代器遍歷時集合長度已定,無法進行新增的操作

//使用list 中特有的迭代器 listiterator

//建立迭代器

listiterator listiterator = list.listiterator();

while (listiterator.hasnext())

} system.out.println(list);

}

public static void fun去重() 

}system.out.println(newlist);

}

再看下面乙個例子

//  需求 在集合中儲存 6個學生

// 分別 兩個 彭 18歲 兩個坤 16歲 兩個峰 80歲

// 去除重複的

1.先建立乙個學生類

public class student 

public student(string name, int age)

public string getname()

public void setname(string name)

public int getage()

public void setage(int age)

@override

public string tostring()

2.新增元素並去重

list list = new arraylist<>();

list.add(new student("彭",18));

list.add(new student("彭",18));

list.add(new student("坤",16));

list.add(new student("坤",16));

list.add(new student("峰",80));

list.add(new student("峰",80));

list newlist = new arraylist<>();

iterator it = list.iterator();//迭代器

while (it.hasnext())

}system.out.println(newlist);

如上,此時,
(!newlist.contains(sd);
無法進行判斷 ,所以我們想到在student類中重寫 equals方法,直接比較 字串 name 與int  age.

@override

public boolean equals(object obj)

此刻比較的是 name 與age 兩者被不被包含時 將student 移入新集合. 

Java之集合List的學習(二)

在初步學習了list集合類後,對list的三個子實現類也進行了學習。list三個子實現類分別是 arraylist,vector,linklist.特點 arraylist 底層資料結構式陣列結構,查詢塊,增刪慢 從記憶體角度考慮 執行緒不安全的,不同步的,執行效率高 vector 這是乙個執行緒安...

java 集合框架 之 list

list 介面 常見實現類 arraylist是基於陣列實現的,是乙個陣列佇列。可以動態的增加容量!查詢快 1.增加乙個值 list nums new arraylist nums.add 3 nums.add 5 nums.add 1 nums.add 0 system.out.println n...

Java之List集合排序

1.類實現comparable 介面 public class book implements comparable public void setbookname string bookname public double getunitprice public void setunitprice...