Java基礎——ArrayList與LinkedList(一),arraylistlinkedlist

來源:互聯網
上載者:User

Java基礎——ArrayList與LinkedList(一),arraylistlinkedlist

一、定義

ArrayList和LinkedList是兩個集合類,用於儲存一系列的對象引用(references)。

引用的格式分別為:

 1 ArrayList<String> list = new ArrayList<String>(); 

 1 LinkedList<Integer> list = new LinkedList<Integer>(); 

二、ArrayList與LinkedList的大致區別

1.ArrayList是實現了基於動態數組的資料結構,LinkedList基於鏈表的資料結構;

2.對於隨機訪問get和set,ArrayList優先於LinkedList。因為LinkedList要移動指標。

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

(關於3,網上又爭論,意思是說對大型資料的增刪,收尾增刪或對中間某位作用,效果是不同的,有待考證!)

三、ArrayList與LinkedList常用方法

代碼執行個體:

 1 import java.util.ArrayList; 2  3 public class CollT2 { 4  5     public static void main(String[] args) { 6  7         // 建立一個ArrayList 8         ArrayList<String> list = new ArrayList<String>(); 9         System.out.println("初始化大小:" + list.size());10 11         // 添加元素12         list.add("北京");13         list.add("天津");14         list.add("上海");15         list.add("廣州");16         list.add("深圳");17         list.add("海口");18         list.add("廈門");19         System.out.println("當前容量:" + list.size());20 21         // 講ArrayList的大小和實際所含元素的大小設定一致22         // 注意:此操作示範下面會拋出的異常:java.util.ConcurrentModificationException23         list.trimToSize();24 25         // 遍曆26         for (String string : list) {27             System.out.println(string);28 29             // 在指定位置插入元素30             list.add(2, "黑龍江");31             for (String string1 : list) {32                 System.out.println(string1);33             }34             System.out.println("=======分割線========");35 36             // 清空list37             list.clear();38             for (String string3 : list) {39                 System.out.println(string3);40             }41 42         }43     }44 }

  1 import java.util.LinkedList;  2   3 //ArrayList基於數組實現,所以它具備數組的特點,即查詢速度較快,但是修改、插入的速度卻有點兒慢。  4 //下面將要介紹的LinkedList就是來解決這個問題的,LinkedList基於鏈表,與ArrayList互補。  5 //所以實際開發中我們應該按照自己的需求來定到底用哪一個。  6   7 //LinkedList底層採用雙向迴圈列表實現,進行插入和刪除操作時具有較高的速度.  8 //我們還可以使用LinkedList來實現隊列和棧  9  10 public class CollT3 { 11     @SuppressWarnings("null") 12     public static void main(String[] args) { 13  14         // 創建一個list 15         LinkedList<Integer> list = new LinkedList<Integer>(); 16         LinkedList<Integer> list2 = new LinkedList<Integer>(); 17         LinkedList<Integer> list3 = new LinkedList<Integer>(); 18         LinkedList<Integer> list4 = new LinkedList<Integer>(); 19          20         System.out.println(list.size()); 21  22         // 添加元素 23         // list.add("鍋包肉");沒考慮資料類型 24         // list.add("溜肉段"); 25         System.out.println("====分割線1===="); 26  27         list.add(5); 28         list.add(6); 29         list.add(7); 30         list.add(8); 31         list.add(9); 32         list.add(10); 33  34         list2.add(-1); 35         list2.add(-2); 36         list2.add(-3); 37         list2.add(-4); 38         list2.add(-5); 39  40         list3.add(111); 41         list3.add(222); 42         list3.add(333); 43         list3.add(444); 44         list3.add(555); 45          46         list4=null; 47  48         System.out.println(list.size()); 49  50         // 遍曆 51         for (Integer a : list) { 52             System.out.println(a); 53         } 54  55         list.add(4, 11111); 56         System.out.println(list);// 竟然是橫著列印出來的 57         System.out.println("===分割線2===="); 58  59         list.add(3, 22222); 60         System.out.println(list);// 二次驗證竟然是橫著列印出來的 61  62         System.out.println("===分割線3===="); 63         System.out.println(list.addAll(list2)); 64         System.out.println(list); 65  66         System.out.println("===分割線4===="); 67         // 錯誤:System.out.println(2,list.addAll(list3)); 68         list.addAll(2, list3);// 將指定 collection 中的所有元素從指定位置開始插入此列表。 69         System.out.println(list); 70  71         System.out.println("===分割線5===="); 72         list3.addFirst(3);//需要單獨列印 73         System.out.println(list3); 74          75         System.out.println("===分割線6===="); 76         list3.addLast(0000000001);//1 77         list3.addLast(000000000);//0 78         list3.addLast(0);//0 79         //list3.addLast(00000000000000009);//The literal 00000000000000009 of type int is out of range  80         list3.addLast(0000000000000000000000000000000000007);//末尾只能寫到7,8和9不行 81         System.out.println(list3); 82          83         list.clear(); 84         System.out.println(list);//[] 85          86         System.out.println("===分割線7===="); 87          88         list2.clone();//返回此 LinkedList的淺表副本。 89         System.out.println(list); 90          91         System.out.println("===分割線8===="); 92         //list3.contains(999999999);//呃,竟然不是這麼驗證的!!!! 93         System.out.println(list3.contains(999999999));// 如果此列表包含指定元素,則返回 true。 94          95         System.out.println("===分割線9===="); 96         //list3.element();//呃,竟然不是這麼驗證的!!!! 97         System.out.println(list3.element());//擷取但不移除此列表的頭(第一個元素)。 98         System.out.println(list3);//驗證上面的操作真的只是擷取沒有移除 99         100         System.out.println("===分割線10====");//注意上面對list3的操作,給它頭位添加個3了101         System.out.println(list3.get(2));// 返回此列表中指定位置處的元素。102         103         System.out.println("===分割線11====");104         System.out.println(list3.getFirst());//返回此列表的第一個元素。105         System.out.println(list3.getLast());//返回此列表的最後一個元素。106         107         System.out.println("===分割線12====");108         System.out.println(list3.indexOf(333));//返回此列表中首次出現的指定元素的索引,如果此列表中不包含該元素,則返回 -1。109         System.out.println(list3.indexOf(10));110         111         System.out.println("===分割線13====");112         list3.add(333);113         list3.add(333);114         list3.add(333);115         System.out.println(list3);116         System.out.println(list3.lastIndexOf(0));//返回此列表中最後出現的指定元素的索引,如果此列表中不包含該元素,則返回 -1。117         System.out.println(list3.lastIndexOf(9));//-1118         119         System.out.println("===分割線14====");120         list3.offer(6);//將指定元素添加到此列表的末尾(最後一個元素)。121         System.out.println(list3.offer(6));//true122         System.out.println(list3);123         124         System.out.println("===分割線15====");125         System.out.println(list3.peek());// 擷取但不移除此列表的頭(第一個元素)。126         127         //peekFirst();擷取但不移除此列表的最後一個元素;如果此列表為空白,則返回 null。128         //System.out.println(list4.peekFirst());上面list4定義為null,黃色報錯。用了@SuppressWarnings("null")。驗證:java.lang.NullPointerException129         //System.out.println(list4.peekLast());java.lang.NullPointerException130         131         System.out.println("===分割線16====");132         System.out.println(list3);133         list3.poll();134         System.out.println(list3);135         136         System.out.println("===分割線17====");137         System.out.println(list3);138         list3.toArray();//返回以適當順序(從第一個元素到最後一個元素)包含此列表中所有元素的數組。139         System.out.println(list3);140     }141 142 }

列印結果:

0====分割線1====65678910[5, 6, 7, 8, 11111, 9, 10]===分割線2====[5, 6, 7, 22222, 8, 11111, 9, 10]===分割線3====true[5, 6, 7, 22222, 8, 11111, 9, 10, -1, -2, -3, -4, -5]===分割線4====[5, 6, 111, 222, 333, 444, 555, 7, 22222, 8, 11111, 9, 10, -1, -2, -3, -4, -5]===分割線5====[3, 111, 222, 333, 444, 555]===分割線6====[3, 111, 222, 333, 444, 555, 1, 0, 0, 7][]===分割線7====[]===分割線8====false===分割線9====3[3, 111, 222, 333, 444, 555, 1, 0, 0, 7]===分割線10====222===分割線11====37===分割線12====3-1===分割線13====[3, 111, 222, 333, 444, 555, 1, 0, 0, 7, 333, 333, 333]8-1===分割線14====true[3, 111, 222, 333, 444, 555, 1, 0, 0, 7, 333, 333, 333, 6, 6]===分割線15====3===分割線16====[3, 111, 222, 333, 444, 555, 1, 0, 0, 7, 333, 333, 333, 6, 6][111, 222, 333, 444, 555, 1, 0, 0, 7, 333, 333, 333, 6, 6]===分割線17====[111, 222, 333, 444, 555, 1, 0, 0, 7, 333, 333, 333, 6, 6][111, 222, 333, 444, 555, 1, 0, 0, 7, 333, 333, 333, 6, 6]

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.