Java LinkedList 集合

Java LinkedList 集合

LinkedList

  • 繼承自 AbstractSequentialList,實現了 Iterable 、Collection、List 接口。

  • 內部類 ListItr 實現了 ListIterator 接口。

  • LinkedList 可以使用 Iterator 和 ListIterator 兩種迭代器訪問元素

  • LinkedList 底層是鏈表結構,可以使用索引直接訪問集合中的元素,調用 get() 和 set() 方法即可。

  • 從 JDK 1.2 版本開始。

  • ArrayList 集合內元素可以重複。

  • 特點 : 增刪快,改查慢。 LinkedList 是線程不安全的 。

  • 添加元素

    • 示例

      LinkedList<Integer> list = new LinkedList<>();
      
      // 將指定元素添加到此列表的結尾
      list.add(1);
      System.out.println("add(E e) :" + list);
      
      // 在此列表中指定的位置插入指定的元素
      list.add(1, 2);
      System.out.println("add(int index, E e) :" + list);
      
      // 添加一個集合到當前集合的末尾
      list.addAll(list);
      System.out.println("addAll(Collection<? extends E> c) :" + list);
      
      // 添加一個集合到當前集合的指定位置
      list.addAll(0, list);
      System.out.println("addAll(int index, Collection<? extends E> c) :"
              + list);
      
      // 添加一個元素到頭部
      list.addFirst(3);
      System.out.println("addFirst(E e) :" + list);
      
      // 添加一個元素到尾部
      list.addLast(4);
      System.out.println("addLast(E e) :" + list);
      
      // 添加一個元素到末尾
      list.offer(5);
      System.out.println("offer(E e) :" + list);
      
      // 添加一個元素到頭部
      list.offerFirst(6);
      System.out.println("offerFirst(E e) :" + list);
      
      // 添加一個元素到末尾
      list.offerLast(7);
      System.out.println("offerLast(E e) :" + list);
    • 運行結果
      這裏寫圖片描述

  • 修改元素

    • 示例

      LinkedList<Integer> list = new LinkedList<>();
      
      for (int i = 0; i < 10; i++) {
          list.add(i);
      }
      
      // 用指定元素替換指定位置的元素,返回被替換的元素
      Integer ele = list.set(2, 10);
      System.out.println("(set(int index, E e) :)" + list + ", return:" + ele);       
    • 運行結果
      這裏寫圖片描述

  • 獲取元素

    • 示例

      LinkedList<Integer> list = new LinkedList<>();
      
      // 爲集合添加10個元素
      for (int i = 0; i < 10; i++) {
          list.add(i);
      }
      
      // 獲得集合中第一個元素,不移除此元素
      int ele = list.element();
      System.out.println("element() return :" + ele + " , list = " + list);
      
      // 獲得集合中指定位置的元素
      ele = list.get(5);
      System.out.println("get(int index) return :" + ele + " , list = "
              + list);
      
      // 獲得集合中第一個元素
      ele = list.getFirst();
      System.out.println("getFirst() return :" + ele + " , list = " + list);
      
      // 獲得集合中最後一個元素
      ele = list.getLast();
      System.out.println("getLast() return :" + ele + " , list = " + list);
      
      // 獲取但不移除此列表的頭(第一個元素)
      ele = list.peek();
      System.out.println("peek() return :" + ele + " , list = " + list);
      
      // 獲取但不移除此列表的第一個元素;如果此列表爲空,則返回 null
      ele = list.peekFirst();
      System.out.println("peekFirst() return :" + ele + " , list = " + list);
      
      // 獲取但不移除此列表的最後一個元素;如果此列表爲空,則返回 null
      ele = list.peekLast();
      System.out.println("peekLast() return :" + ele + " , list = " + list);
      
      // 獲取並移除此列表的頭(第一個元素)
      ele = list.poll();
      System.out.println("poll() return :" + ele + " , list = " + list);
      
      // 獲取並移除此列表的第一個元素;如果此列表爲空,則返回 null
      ele = list.pollFirst();
      System.out.println("pollFirst() return :" + ele + " , list = " + list);
      
      // 獲取並移除此列表的最後一個元素;如果此列表爲空,則返回 null
      ele = list.pollLast();
      System.out.println("pollLast() return :" + ele + " , list = " + list);
    • 運行結果
      這裏寫圖片描述

  • 移除元素

    • 示例

      LinkedList<Integer> list = new LinkedList<>();
      
      // 爲集合添加20個元素
      for (int i = 0; i < 10; i++) {
          list.add(i);
          list.add(i);
      }
      
      // 移除第一個元素,並返回被移除的元素
      int ele = list.remove();
      System.out.println("remove() :" + list + ", return:" + ele);
      
      // 移除指定位置的元素,並返回被移除的元素
      ele = list.remove(1);
      System.out.println("remove(int index) :" + list + ", return:" + ele);
      
      // 移除指定元素 (如果它存在,則移除一個)
      list.remove(Integer.valueOf(5));
      System.out.println("remove(Object o) :" + list);
      
      // 創建一個新集合,並添加 2 個元素
      LinkedList<Integer> newList = new LinkedList<>();
      newList.add(7);
      newList.add(8);
      
      // 移除指定集合,(所有交集)
      list.removeAll(newList);
      System.out.println("removeAll(Collection<? extends E> c) :" + list);
      
      // 移除第一個元素
      ele = list.removeFirst();
      System.out.println("removeFirst() :" + list + ", return:" + ele);
      
      // 移除最後一個元素
      ele = list.removeLast();
      System.out.println("removeLast() :" + list + ", return:" + ele);
      
      // 移除第一次找到的指定元素(從頭部到尾部遍歷)
      list.removeFirstOccurrence(2);
      System.out.println("removeFirstOccurrence(Object o) :" + list);
      
      // 添加一個 2 到集合的頭部,測試下面的方法
      list.addFirst(2);
      // 移除最後一次找到的指定元素(從頭部到尾部遍歷)
      list.removeLastOccurrence(2);
      System.out.println("removeLastOccurrence(Object o) :" + lis
    • 運行結果
      這裏寫圖片描述

  • 其他方法

    • 示例

      LinkedList<Integer> list = new LinkedList<>();
      
      // 爲集合添加10個元素
      for (int i = 0; i < 10; i++) {
          list.add(i);
      }
      
      // 獲得集合中元素的個數
      int size = list.size();
      System.out.println("size() :" + size);
      
      // 判斷集合中是否包含指定元素
      boolean result = list.contains(5);
      System.out.println("contains(Object o) :" + result);
      
      // 清空集合
      list.clear();
      System.out.println(list);
    • 運行結果
      這裏寫圖片描述

遍歷元素

  • for 循環

    • 示例

      LinkedList<Integer> list = new LinkedList<>();
      
      // 爲集合添加10個元素
      for (int i = 0; i < 10; i++) {
          list.add(i);
      }
      
      // 遍歷集合
      for (int i = 0; i < list.size(); i++) {
          System.out.print(list.get(i) + ",");
      }
    • 運行結果
      這裏寫圖片描述

  • 將集合轉成數組,遍歷數組

    • 示例

      LinkedList<Integer> list = new LinkedList<>();
      
      // 爲集合添加10個元素
      for (int i = 0; i < 10; i++) {
          list.add(i);
      }
      
      Integer[] arr = list.toArray(new Integer[list.size()]);
      // 遍歷數組
      for (int i = 0; i < arr.length; i++) {
          System.out.print(arr[i] + ",");
      }
    • 運行結果
      這裏寫圖片描述

  • foreach(增強for)

    • 示例

      LinkedList<Integer> list = new LinkedList<>();
      
          // 爲集合添加10個元素
          for (int i = 0; i < 10; i++) {
              list.add(i);
          }
      
          // 增強 for 遍歷
          for (int i : list) {
              System.out.print(i + ",");
          }
    • 運行結果
      這裏寫圖片描述

  • 迭代器(Iterator)

    • 示例

      LinkedList<Integer> list = new LinkedList<>();
      
      // 爲集合添加10個元素
      for (int i = 0; i < 10; i++) {
          list.add(i);
      }
      
      Iterator<Integer> it = list.iterator();
      // 遍歷
      while (it.hasNext()) {
          int i = it.next();
          System.out.print(i + ",");
      }
    • 運行結果
      這裏寫圖片描述

  • 迭代器(ListIterator)

    • 示例

      LinkedList<Integer> list = new LinkedList<>();
      
      // 爲集合添加10個元素
      for (int i = 0; i < 10; i++) {
          list.add(i);
      }
      
      ListIterator<Integer> li = list.listIterator();
      // 遍歷
      while (li.hasNext()) {
          int i = li.next();
          System.out.print(i + ",");
      }
    • 運行結果
      這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章