跳到主要內容

[Java] HashMap資料結構簡介與用法

Java HashMap
官方文件:
https://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html
import java.util.HashMap;
簡介:
以每個獨立的 key 對應一個 value

特性:
  1. 資料(K, V)原則上是一對一
  2. key不能重複,若重複宣告,後者會取代前者
  3. 資料不會排序,預設是先宣告的在前面(呼叫整個 HashMap 的話)

用途:
建立對應表(轉換表),一 key 對一 value
像是學生成績表,以名字做為 key,查詢 key 可以得對應的成績 value

資料格式:

HashMap<K,V>

K: key
V: value

用法:
1. 宣告: 型別是 reference,不能存基本型別,像整數要寫 Integer 而非 int
HashMap<String, String> hashmap = new HashMap<String, String>();
HashMap<String, String> hashmap = new HashMap<>();
HashMap<String, Integer> hashmap = new HashMap<>();
2.新增資料: 同時給Key-Value參數,新增這筆資料到該hashMap
hashmap.put("Item 1", "Value 1");
hashmap.put("Item 1", 25);
3.刪除資料: 根據參數Key刪掉對應的Key-Value資料
hashmap.remove("Item 1");
4.取特定key對應的值
hashmap.get("Item 1");
5.顯示整個HashMap內容
System.out.println("內容:" + hashmap);
for(String Key: map.keySet()){
    System.out.println(Key + " " + hashmap.get(Key));
}
6.清空HashMap: 刪除整個HashMap內容,物件還在,但沒有東西
hashmap.clean();
補充:
如果想要此 map 可以1對多的話(1 key 對應多個 value)
value 的型別可以用 ArrayList
好處在value可以使用所有 ArrayList 的功能
宣告:
HashMap<> hashmap = new HashMap<>();
每個key對應都是一個ArrayList,放數值前要先初始化:
hashmapmap.put("Item 1", new ArrayList<>());
hashmapmap.put("Item 2", new ArrayList<>());
新增數值:用get得到ArrayList物件,再用他的add方法新增
hashmap.get("Item 2").add("d");
hashmap.get("Item 2").add("e");
刪除某個key的所有value: 下次要用此key時要再次初始化
hashmap.remove("Item 2");
刪除某個key的特定value
hashmap.get("Item 2").remove("d");

留言

這個網誌中的熱門文章

【Ubuntu】Terminal 複製貼上的方法

Ctrl C + Ctrl V 能使用嗎? 有常常透過Ubuntu在指令海裡摸索的一定不陌生 在Terminal裡我們不能用Ctrl C + Ctrl V來進行複製貼上的作業 每次都不小心Ctrl C下去,就要抱頭痛哭QQ (在Terminal裡面是呼叫一個外部中斷,強制中止當下系統的動作) 其實在Terminal當中也有複製貼上的功能 Ctrl + Shift + C 複製 Ctrl + Shift + V 貼上 功能相當於一般的複製貼上,也只是多按一個Shift,相信不是太難適應 如果是透過VirtualBox建立的Ubuntu 想要跟主機互通的話,可以參考這篇: [VirtualBox] 共用剪貼簿與檔案 另外,在Terminal裡也有所謂的暫存剪貼簿,是針對指令設計的 Ctrl + U 剪下游標前的字元到剪貼簿 Ctrl + K 剪下游標後的字元到剪貼簿 Ctrl + Y 貼上 所謂的游標就是打指令的那行閃爍的位置 所以其他畫面上系統輸出的文字不會受影響,才說是針對指令設計 這個暫存的剪貼簿也跟一般的是分開的,或許會有派上用場的一天吧!

【Ubuntu】關閉預設畫面自動鎖定

近期一直碰到一個小麻煩 在Ubuntu VM做研究時 因為平常會在本機Search,才去VM操作 卻發現每次畫面跳去Ubuntu那邊 都還要重新打密碼登入,很惱人 怒查之下,原來這個動作叫  畫面鎖定 反正VM就是個測試環境,根本不需要這些安全措施 透過下面步驟就可以取消了 甚至連開機登入時都可以不用打密碼了呵呵