Java - 【集合框架一:概述】List、Map、Set

2020-10-19 11:01:24

List、Map、Set


一:List

在這裡插入圖片描述在這裡插入圖片描述

1> ArrayList
在這裡插入圖片描述

  • ArrayList採用的擴容機制(預設取0,add時自動取10,1.5倍擴容

    在這裡插入圖片描述

    在這裡插入圖片描述

    • 測試該擴容機制

      /**
       * >>  有符號右移
       * >>> 無符號右移
       */
      public class ListTest {
          public static void main(String[] args) {
              int oldCapacity = 10;
              System.out.println(1 >> 1);    // 0
              System.out.println(-1 >> 1);    // -1
              System.out.println(1 >> 2);    // 0
              System.out.println(1 >>> 1);    // 0
              System.out.println(-1 >>> 1);    // 2147483647
              System.out.println(1 >>> 2);    // 0
              int newCapacity = oldCapacity + (oldCapacity >> 1);
              System.out.println(newCapacity);    // 15
      
      
              int a = 12;
              int b = 26;
              int c = 33;
              System.out.println(a+(a>>1));    // 18 = 12+6
              System.out.println(b+(b>>1));    // 39 = 26+13
              System.out.println(c+(c>>1));    // 49 = 33+16
      
              System.out.println(c*1.5);    // 49.5
              System.out.println(Math.round(c*1.5));    // 50:long
              System.out.println(Math.ceil(c*1.5));     // 50.0:double
              System.out.println(Math.floor(c*1.5));    // 49.0:double
      
              System.out.println(c*1.5*(-1));    // -49.5
              System.out.println(Math.round(c*1.5*(-1)));    // -49:long
              System.out.println(Math.ceil(c*1.5*(-1)));     // -49.0:double
              System.out.println(Math.floor(c*1.5*(-1)));    // -50.0:double
          }
      }
      

2> LinkedList
LinkedList類的UML類圖

  • LinkedList內部的Node

    在這裡插入圖片描述

  • LinkedList的add邏輯
    在這裡插入圖片描述
    3> Vector(對外提供的方法全部被synchronized修飾,操作是執行緒安全的
    在這裡插入圖片描述

  • Vector採用的擴容機制(初始化容量10,擴增容量大小可以自定義+預設2倍)

    在這裡插入圖片描述

二:Map

在這裡插入圖片描述

1> HashMap
在這裡插入圖片描述
2> TreeMap
在這裡插入圖片描述

三:Set

在這裡插入圖片描述1> HashSet
在這裡插入圖片描述

2> TreeSet
在這裡插入圖片描述

在這裡插入圖片描述