Java容器學習——List
- 2021 年 8 月 13 日
- 筆記
- Java進階04——容器
Java容器學習——List
基礎知識
數組:
優點:隨機存取,可以快速訪問元素
缺點:靜態分配記憶體,存在空間閑置或者溢出現象;不適合進行插入和刪除操作,需要移動大量元素。
鏈表:
優點:動態分配記憶體,不浪費同時也夠用;對於大量元素的插入、刪除操作鏈表優勢十分明顯。
缺點:不能隨機訪問元素,得從頭到尾遍歷。
學科聯繫
聯想c語言數據結構線性表:順序表採用的一組地址連續的存儲單元依次存儲元素,可以看成一個靜態的數組;而鏈表是用一組任意存儲單元存儲數據元素(這組單元可連續也可不連續),動態分配記憶體空間。
Java中的列表它們是動態分配記憶體的,與c語言中的順序表不同的是ArryList是動態分配記憶體的,大小會隨著元素的增多而變大。LinkedList對應鏈表
ArrayList和LinkedList區別
- ArrayList是實現了基於動態數組的數據結構,LinkedList基於鏈表的數據結構。
- 對於隨機訪問元素,ArrayList優於LinkedList。
- 對於新增和刪除操作add和remove,LinedList比較佔優勢,因為ArrayList要移動數據。
註:兩者雖有區別,但都能實現一樣的功能,在實際開發中,ArrayList用的比較多。
對List的常用操作
- add() 添加元素
- remove() 刪除元素
- size() 列表的大小(列表中裝有多少個元素)
- get(i) 從列表中獲取某個元素,列表的下標也是從0開始
- contains()判斷容器是否含有XXX東西
註:List在 java包中
更多操作請查看API文檔
【參考程式碼】
package Collection;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class TestList {
public static void main(String[] args) {
List list = new ArrayList();
// 換成Linkedist 下面的操作都能一樣實現
list.add("小明");
list.add("小紅");
list.add("小藍");
list.add("小綠");
list.add("小明");
System.out.println(list);//[小明, 小紅, 小藍, 小綠, 小明]
list.remove("小藍");
System.out.println(list);// [小明, 小紅, 小綠, 小明]
// 用Object類來接(默認)
Object obj = list.get(1);
String s = (String) obj; //由於原來的數據是String類,使用使要把Object類向下轉型(強轉)為String類
System.out.println(s);// 小紅
System.out.println(list.size());// 計算列表的大小(長度):4
System.out.println(list.contains("小藍"));//判斷列表中是否有xxx false
// 遍歷列表
for (int i = 0; i < list.size(); i++) {
String str = (String)list.get(i); //從列表裡邊拿數據,向下轉型,強轉
System.out.println(str);
// System.out.println(list.get(i));
}
}
}
註:
列表或者容器為了它的通用性(為了把所有東西能裝它裡面),任何東西扔到裡面是都會被向上轉型為Object類:在Java中Object類是所有類的的根,Object是Java中統一的一種數據類型,所有的類都能繼承它。
放進去的是Object類,自然我拿出出來時也是Object類,但當初的數據類型不一定是Object類,我們想使用的是它原來的類型
我們喜歡的是那個本質的它!因此想從列表裡拿數據,那就要轉為原來的數據類型——向下轉型,強制轉化!
總結
相比與大一下學期的c語言數據結構,Java中列表操作更加的靈活便捷,具體的添加、刪除、獲取元素等等操作都有具體的方法來實現了,而且ArrayList還是動態分配記憶體的,簡直太強了!
以上是我對剛剛學到的Java容器中List知識的一些個人總結與感悟,最後,感謝各位大佬們看到了這裡!願你韶華不負,青春無悔!
注: 由於自己剛剛開始學習Java不久,語言文字描述、技術等各方面還不是很好,如果文章有任何錯誤和建議,請各位大佬盡情評論留言!如果這篇文章對你有些許幫助,希望可愛親切的您點個贊推薦一手,非常感謝啦!