1. 程式人生 > 其它 >Java容器學習——List

Java容器學習——List

Java容器學習——List

基礎知識

陣列:

​ 優點:隨機存取,可以快速訪問元素

​ 缺點:靜態分配記憶體,存在空間閒置或者溢位現象;不適合進行插入和刪除操作,需要移動大量元素。

連結串列:

​ 優點:動態分配記憶體,不浪費同時也夠用;對於大量元素的插入、刪除操作連結串列優勢十分明顯。

​ 缺點:不能隨機訪問元素,得從頭到尾遍歷。

學科聯絡

​ 聯想c語言資料結構線性表:順序表採用的一組地址連續的儲存單元依次儲存元素,可以看成一個靜態的陣列;而連結串列是用一組任意儲存單元儲存資料元素(這組單元可連續也可不連續),動態分配記憶體空間。

​ Java中的列表它們是動態分配記憶體的,與c語言中的順序表不同的是ArryList是動態分配記憶體的,大小會隨著元素的增多而變大。LinkedList對應連結串列

ArrayList和LinkedList區別

  1. ArrayList是實現了基於動態陣列的資料結構,LinkedList基於連結串列的資料結構。
  2. 對於隨機訪問元素,ArrayList優於LinkedList。
  3. 對於新增和刪除操作add和remove,LinedList比較佔優勢,因為ArrayList要移動資料。

注:兩者雖有區別,但都能實現一樣的功能,在實際開發中,ArrayList用的比較多。

對List的常用操作

  1. add() 新增元素
  2. remove() 刪除元素
  3. size() 列表的大小(列表中裝有多少個元素)
  4. get(i) 從列表中獲取某個元素,列表的下標也是從0開始
  5. 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不久,語言文字描述、技術等各方面還不是很好,如果文章有任何錯誤和建議,請各位大佬盡情評論留言!如果這篇文章對你有些許幫助,希望可愛親切的您點個贊推薦一手,非常感謝啦!