1. 程式人生 > 實用技巧 >Dirichelet卷積的k次方根

Dirichelet卷積的k次方根

Map集合

概述

現實生活中,比如像:身份證和人,學號和學生等,這種具有一 一對應的關係,我們稱為對映.
在java中我們提供啦一種特殊的容器來存放這種具有對映關係的元素,即 java.util.Map

以下圖瞭解Collection和Map的異同

  • Collection集合是單列集合,儲存的元素是一個一個的存入
  • Map 集合是雙列集合,存入的元素具有對映關係,成對出現的,通過鍵可以找到相對應的值
Map中常用子類

HashMap:儲存資料時採用的是雜湊表結構,元素存入,取出的順序可能不同,不保證迭代順序.
Map中的鍵不能重複,值可以重複,所以為了保證鍵的唯一性,需要重寫鍵的hashCode()和equals()方法.
LinkedHashMap:

HashMap下面的一個子類,儲存資料採用的是 雜湊表+連結串列 結構,通過連結串列結構可以保證元素存入和取出的順序保持一致,通過雜湊表結構可以保證鍵的唯一性,需要重寫hashCode()和equals()方法.

常用的方法如下:
public V put(K key, V value): 把指定的鍵和指定的值新增到Map集合當中
public V remove(Object key): 把指定的鍵和鍵所對應的值從Map集合中刪除,返回的是被刪除的元素
public V get(Object key): 根據指定的鍵,得到鍵對應的值
public Set<K> KeySet():獲取Map集合當中的所有的鍵值,並把所有的鍵儲存到Set集合中返回
public Set<Map.Entry<K,V>> entrySet(): 獲得Map集合中成對的元素,把他們當成一組物件存入到Set集合當中,型別是Map.Entry<K,V>型別的.

HashMap儲存的自定義型別鍵值

HashMap儲存自定義型別鍵值
練習:每位學生(姓名,年齡)都有自己的家庭地址,學生作為鍵key值, 家庭地址作為value值
注意:同名同年齡的學生為同一學生
示例程式碼:
當給HashMap中儲存自定義物件時,如果自定義物件作為Key值,這時要保證物件的唯一性,必須重寫物件的hashCode和equals方法
如果保證map中儲存元素的順序,主要體現在key值,可以使用LinkedHashMap集合來存放

LinkedHashMap 集合

HashMap保證成對元素的唯一,並且查詢速度相對較快
java. util. L inkedHashMap<K,V> extends HashMap<K, V>
資料結構採用的是雜湊表+連結串列結構(記錄元素的順序)實現,具有可預知的迭代順序
Hashtable集合:不可以儲存nu11值,null健
Hashtable和Vector集合-樣,在JDK1 .2版本之後被更先進的集合(HashMap , ArrayList )取代了
Hashtable有一個子類Propert ies依然活躍在歷史的舞臺上
Properties集合是-個唯一和IO流相結合的集合
HashTable
java.til.HashtablesK,V> implements Map<K,V>介面
。Hashtable:底層是一 個雜湊表, 是一個執行緒安全的集合, 是單執行緒的集合,速度慢
. HashMap:底層也是一 個雜湊表,是一個執行緒不安全的集合,是多執行緒的集合,速度快
. HashMap集合:可以儲存null key值,null value值
Hashtable集合: 不可以儲存null值,null鍵
. Hashtable 和Vector集合樣, 在JDK1.2版本之後被更先進的集合(HashMap,ArrayList)取代了
Hashtable有個子類Properties依然活躍在歷史的舞臺上
. Properties集合是一 個唯一 和I0流相結合的集合

public static void show05() {
L inkedHa shMap<Character, Integer> map = new L inkedHa shMap<>( );
String s = "hellowordhelloword";
for (int i = 0; i < s.length(); i++) {
char C = s.charAt(i);
if (map.get(c) == null) {
map.put(c, 1);
} else {
map. put(c, map.get(c) + 1);
System. out. println(map);
}