1. 程式人生 > 實用技巧 >AtCoder Beginner Contest 164 D - Multiple of 2019

AtCoder Beginner Contest 164 D - Multiple of 2019

java.util.Map<k,v>集合
Map集合的特點:
1.Map集合是一個雙列集合,一個元素包含兩個值(一個key,一個value)
2.Map集合中的元素,keyvalue的資料型別可以相同,也可以不同
3.Map集合中的元素,key是不允許重複的,value是可以重複的
4.Map集合中的元素,keyvalue是一一對應
java.util.HashMap<k,v>集合 implements Map<k,v>介面
HashMap集合的特點:
1.HashMap集合底層是雜湊表:查詢的速度特別的快
JDK1.8之前:陣列+單向連結串列
JDK1.8之後:陣列+單向連結串列|紅黑樹(連結串列的長度超過8):提高查詢的速度
2.hashMap集合是一個無序的集合,儲存元素和取出元素的順序有可能不一致
java.util.LinkedHashMap<k,v>集合 extends HashMap<k,v>集合
LinkedHashMap的特點:
1.LinkedHashMap集合底層是雜湊表+連結串列(保證迭代的順序)
2.LinkedHashMap集合是一個有序的集合,儲存元素和取出元素的順序是一致的
public V put(K key, V value): 把指定的鍵與指定的值新增到Map集合中。
返回值:v
儲存鍵值對的時候,key不重複,返回值Vnull
儲存鍵值對的時候,key重複,會使用新的value替換map中重複的value,返回被替換的value
public V remove(Object key): 把指定的鍵 所對應的鍵值對元素 在Map集合中刪除,返回被刪除元素的值。
返回值:V
key存在,v返回被刪除的值
key不存在,v返回null
public V get(Object key) 根據指定的鍵,在Map集合中獲取對應的值。
返回值:
key存在,返回對應的value
key不存在,返回null
boolean containsKey(Object key) 判斷集合中是否包含指定的鍵。
包含返回true,不包含返回false



Map集合的第一種遍歷方式:通過鍵找值的方式
Map集合中的方法:
Set<K> keySet() 返回此對映中包含的鍵的 Set 檢視。
實現步驟:
1.使用Map集合中的方法keySet(),Map集合所有的key取出來,儲存到一個Set集合中
2.遍歷set集合,獲取Map集合中的每一個key
3.通過Map集合中的方法get(key),通過key找到value


Map集合遍歷的第二種方式:使用Entry物件遍歷
EntryMap集合的內部介面,當Map集合已建立,那麼在Map集合中建立一個Entry物件,用來記錄鍵與值----》結婚證

Map集合中的方法:
Set<Map.Entry<K,V>> entrySet() 返回此對映中包含的對映關係的 Set 檢視。

實現步驟:
1.使用Map集合中的方法entrySet(),Map集合中多個Entry物件取出來,儲存到一個Set集合中
2.遍歷Set集合,獲取每一個Entry物件
3.使用Entry物件中的方法getKey()getValue()獲取鍵與值
JDK9的新特性:
List介面,Set介面,Map介面:裡邊增加了一個靜態的方法of,可以給集合一次性新增多個元素
static <E> List<E> of​(E... elements)
使用前提:
當集合中儲存的元素的個數已經確定了,不在改變時使用
注意:
1.of方法只適用於List介面,Set介面,Map介面,不適用於接介面的實現類(Arraylist,HashMap)
2.of方法的返回值是一個不能改變的集合,集合不能再使用add,put方法新增元素,會丟擲異常
3.Set介面和Map介面在呼叫of方法的時候,不能有重複的元素,否則會丟擲異常