1. 程式人生 > >Java 學習筆記 兩大集合框架Map和Collection

Java 學習筆記 兩大集合框架Map和Collection

兩大框架圖解




Collection介面

由第一張圖,我們可以知道,Collection介面的子介面有三種,分別是List介面,Set介面和Queue介面

List介面

允許有重複的元素,元素按照新增的順序進行排序

  1. 介面方法

    • void add(int index,Objext o) 在集合的指定位置插入元素
    • Object get(int index) 返回集合中某個指定位置的元素
    • int indexOf(Object o) 返回第一次出現該元素的索引(下標),如果不包含此元素,返回-1
    • int lastIndexOf(Object o) 返回最後一次出現該元素的索引(下標),如果不包含此元素,返回-1
    • Object remove(int index) 移除集合某個索引的元素
    • Object set(int index,Object o) 用指定的元素替換集合中某個指定下標的資料元素
  2. 介面實現類的使用

    • ArrayList
      新增方法:
      addFirst
      getFirst
      removeFirst
      addLast
      getLast
      removeLast

      特點:在儲存方式上是採用陣列進行順序儲存

        List list = new ArrayList();
        List<泛型> list = new ArrayList<>();
    • LinkedList

      特點:在儲存方式上是採用連結串列進行鏈式儲存

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

PS:由於ArrayList是採用陣列進行儲存的,所以新增元素或者是刪除元素時,需要批量移動元素,所以效能較差。但查詢元素的時候,可以通過下標直接進行訪問,所以遍歷元素或隨機訪問元素的時候效率高。
而LinkedList與ArrayList相反

Set介面

不允許有重複的元素,元素沒有順序

  1. 介面方法

    add clear contains remove
    和之前的List差不多,這裡就不多說

  2. 介面實現類的使用

    • HashSet

      下面的圖片很明顯,體現了沒有重複元素的規則

      一般使用的話還是使用泛型使用

        Set<Book> books = new HashSet<>();
    • TreeSet

      由之前介紹的第四張圖可以看到,TreeSet既繼承了Set介面,也繼承了SortedSet介面(排序介面)

      沒有使用泛型,預設使用的是String型別,String類實現了Comparable介面,預設是按字典排序,但是圖中明顯沒有實現排序?不理解。。

      我使用英文開頭,才能實現排序

    • Set集合遍歷
      //Iterator
      Iterator iterator = set.iterator();
      while (iterator.hasNext()){
      System.out.println(iterator.next());
      }
      //foreach
      for (String s:set) {
      System.out.println(s);
      }

      Queue介面

較少使用。。

Map介面

使用鍵值對(key value)進行資料儲存,key與value是一種對映關係
  1. 介面方法
    • Object put(Object key,Object value) 將一個鍵值對存到Map中
    • Object get(Object key) 由key獲得value
    • Object remove(Object key) 刪除該鍵值對
    • Set keyset() 返回當前包含當前map的所有key的Set集合
    • Collection values() 返回當前包含當前map的所有value的Collection集合
    • boolean containsKey(Object key) 是否包含某個key
    • boolean containsValue(Object Value) 是否包含某個Value
    • int size() 返回當前map集合鍵值對的個數
  2. 介面實現類的使用

    • HashMap的使用

      Map<String,String> map = new HashMap<>();
      Map<Integer,String> map = new HashMap<>();

    PS: 一般在開頭宣告鍵值對的型別,如果在後面宣告的話,很大可能會報錯
    • TreeMap的使用

      Map<String,String> map = new TreeMap<>();

    與之前的TreeSet一樣,TreeMap也是實現了SortedMap藉口,帶有排序,預設是按照key的數值自然排序(也就是升序)