Trang

Wednesday, June 18, 2014

HashMap in Java

HashMap trong Java là một kiểu đối tượng được dùng để lưu các cặp giá trị key/value. Với 1 key, bạn có thể tìm được value ứng với key đó. Key phải là duy nhất trong 1 HashMap, ứng với mỗi key sẽ có 1 value tương ứng duy nhất. Value thì có thể trùng nhau.
HashMap thừa kế từ interface java.util.Map. HashMap dùng 1 mảng hash table để cài đặt chi tiết từ Map. Do đó, với mỗi cặp, HashMap sẽ gọi hàm hashCode() của key để lấy giá trị hash vào bảng hash table tương ứng.
Kiểu đối tượng của giá trị key/value của HashMap phải đồng nhất. Trong trường hợp không xác định kiểu dữ liệu, thì java sẽ xem như là kiểu Object – là cha của tất cả đối tượng khác trong Java.
Khởi tạo
Khởi tạo một Hashmap
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.util.HashMap;
import java.util.Map;
 
public class HashMapDemo {
 
public static void main(String[] args) {
 // Khởi tạo từ interface Map, chưa định nghĩa kiểu giá trị
 Map hm1 = new HashMap();
 // Khởi tạo từ interface Map, định nghĩa trước kiểu giá trị
 Map<Integer, String> hm2 = new HashMap();
 
 //Khởi tạo từ HashMap, chưa định nghĩa trước kiểu giá trị
 HashMap hm3 = new HashMap();
 //Khởi tạo từ HashMap, định nghĩa trước kiểu giá trị
 HashMap<Integer, String> hm4 = new HashMap();
 HashMap hm5 = new HashMap<Integer, String>();
 HashMap<Integer, String> hm6 = new HashMap<Integer, String> ();
 }
 
}
HashMap chỉ chấp nhận dữ liệu (cả key và value) là đối tượng. Do đó, các kiểu int, long, double,… không được chấp nhận mà phải dùng Integer, Long, Double,…
Đưa dữ liệu vào và lấy dữ liệu từ HashMap
– Chú ý: Dữ liệu đưa vào HashMap phải ứng với kiểu dữ liệu đã định nghĩa lúc khởi tạo HashMap
1
2
3
hashmap.put (key, value); //đưa dữ liệu và HashMap hashmap
 
hashmap.get(key); // Lấy value tương ứng với key trong hashmap
Example:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public static void main(String[] args) {
 HashMap<Integer, String> hm6 = new HashMap<Integer, String> ();
 
 hm6.put(1, "apple");
 hm6.put(2, "banana");
 hm6.put(3, "kiwi");
 hm6.put(4, "peach");
 
// hm6.put(5, 12345); //Error HashMap<Integer,String> is not applicable for the arguments (int, int)
// hm6.put("6", "coconut"); //Error not applicable for the arguments
 System.out.println("value for 1: " + hm6.get(1));
 System.out.println("value for 2: " + hm6.get(2));
 System.out.println("value for 3: " + hm6.get(3));
 System.out.println("value for 4: " + hm6.get(4));
 
 System.out.println("value for 5: " + hm6.get(5));
 System.out.println("value for 10: " + hm6.get(10));
 }
 
Output:
value for 1: apple
value for 2: banana
value for 3: kiwi
value for 4: peach
value for 5: null
value for 10: null
Lấy tất cả giá trị của HashMap
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//use java.util.Map.Entry
 System.out.println("List key + value:");
 for (Entry<Integer, String> e : hm6.entrySet()){
 System.out.println("Value for " + e.getKey() + " : " + e.getValue());
 }
 
 //use keySet
 System.out.println("List keys");
 for (Integer i : hm6.keySet()){
 System.out.println(i);
 }
 
 //user valueSet
 System.out.println("List values");
 for (String s : hm6.values()){
 System.out.println(s);
 }
Output:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
List key + value:
Value for 1 : apple
Value for 2 : banana
Value for 3 : kiwi
Value for 4 : peach
 
List keys
1
2
3
4
 
List values
apple
banana
kiwi
peach

No comments:

Post a Comment