Map

      在〈Map〉中尚無留言

Map在其他的語言如Python, C#中, 稱為字典, 是一個包含key及value的袋子. key必需是唯一, 值為物件. Map不繼承Collection介面. 使用put/putAll加入元素, get(key)取回元素

HashMap

無順序, 無排序, 可允許key及value都是null

LinkedHashMap

同HashMap, 但因為加了雙向鏈結, 所以走訪效能快, 新增刪除效能差

HashTable

同HashMap, 但這是thread-safe的, 鍵值不可為null

SortedMap

根據key值作自然排序, key不得重複也不可能null

TreeMap

實作SortedMap, 採二元樹排序, 裏面的鍵值必需是同一種資料型態

🔒 完整內容請註冊並登入會員。

免費註冊登入

Deque 介面

Deque是Collection的子介面, 可同時作為queue及stack
queue : FIFO, add, remove
stack : LIFO, push, pop

  Deque stack=new ArrayDeque<>();
  stack.push("one");
  stack.push("two");

Collections集合工具

Collections.synchronizedMap(map) : 變成thread-safe
Collections.sort(list, sort); 依sort方式來排序, 見下面說明

排序集合(Ordering Collections)

Comparable 介面 : 需實作compareTo(), 僅提供一個排序的方式
返回值需包含0, 1, -1三個, 加入Collection的物件, 會依此排序取出

Comparator介面 : 需實作compare(), 可建立多個排序方式
List<Student> list=new ArrayList<>();
Compartor<Student> sortName=new StudentSortName();
Comparator<Student>sortGpa=new StudentSortGpa();
Colloections.sort(list, sortName); <==依sortName排序
Colloections.sort(list, sortGpa); <==依sortGpa序

NavigableSet/NavigableMap

此二個會根據內容作自然排序

NavigableSet 為SortedSet, 只可用在TreeSet;
NavigableSet<Integer> ns1=new TreeSet<>();

NavigableMap為SortedMap, 只可用在TreeMap;
NavigableMap<Integer, Integer> ns2=new TreeMap<>();

並行集合

常見的有
ConcurrentHashMap : 同步HashMap實作
ConcurrentSkipListMap : 同步TreeMap實作
CopyOnWriteArrayList : 同步ArrayList實作

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *