<aside> ☑️ HashMap - 참조문헌
</aside>
[HashMap method에 대한 List]
| HashMap.put(key, value) | HashMap에 key-value를 넣는다 |
|---|---|
| HashMap.remove(key) | HashMap안에서 key로 접근해서 key-value를 제거 |
| HashMap.get(key) | HashMap안에서 key로 접근해서 조회한다 |
| HashMap.keySet() | HashMap안에서 모든 key들을 Set<>으로 가져온다. |
| HashMap.values() | HashMap안에 모든 value들을 가져온다. (반환 타입은 Collection<> 으로 반환된다) |
| HashMap.replace() | HashMap에서 key로 접근해서 그 value를 다른 값으로 바꿔준다. |
| HashMap.containsKey(key) | HashMap안에 key가 있는지 확인해준다. (boolean) |
| HashMap.containsValue(value) | HashMap안에 value가 있는지 확인해준다. (boolean) |
| HashMap.entrySet() | HashMap안에 key-value 모든 pair를 Set<Entry<key, value>>형태로 반환한다. |
| Entry<Integer, String> | Entry객체는 HashMap안에 key-value pair를 하나씩 받아올수 있는 객체 인터페이스. |
| Entry.getKey() | Entry안에서 key를 가져온다. |
| Entry.getValue() | Entry안에서 value를 가져온다. |
| Entry.setKey() | Entry안의 key를 바꿔준다. |
| Entry.setValue() | Entry안의 value를 바꿔준다. |
package HashMapProject;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map.Entry;
import java.util.Set;
public class HashMapIterator {
public static void main(String[] args) {
//참고로 HashMap이나 HashSet은 null을 허용한다.
HashMap<Integer, String> hashMap = new HashMap<Integer, String>();
hashMap.put(1, "A"); //hashSet은 add인데 hashMap은 put임
hashMap.put(2, "B");
hashMap.put(3, "C");
hashMap.put(4, "D");
hashMap.put(5, "E");
hashMap.put(6, "F");
hashMap.put(7, "D");
hashMap.put(8, "B");
hashMap.put(9, "C");
hashMap.put(10, "A");
hashMap.put(3, "A");
//hashmap도 key도 중복되지 않는다 -> 하지만 value는 마지막걸로 update된다.
//hashMap 추가
System.out.println(hashMap);
//hashMap key접근해서 제거하기
hashMap.remove(3);
System.out.println(hashMap);
//key로 value 접근하기
String a = hashMap.get(5);
System.out.println(a);
//replace hasMap안의 key로 접근해서 원하는 value로 바꿔준다.
String returnReplace = hashMap.replace(1, "A+");
System.out.println(returnReplace); //기존의 value는 반환됨.
//Map에서 keySet을 반환해온다 (Set Interface로)
Set<Integer> keySet = hashMap.keySet();
System.out.println(keySet);
//Map안에서 values를 모두 반환한다
Collection<String> values = hashMap.values();
System.out.println(values);
for(String str: values) {
System.out.print(str);
}
//Entry 객체에 대해서
Set<Entry<Integer, String>> entrySet = hashMap.entrySet();
//Entry객체는 HashMap안에 key-value pair를 하나씩 받아올수 있는 객체 인터페이스
System.out.println(entrySet);
//For-loop 이용해서 조회하기
//Set이나 List는 모두 향상된 for문으로 조회가 가능하다.
for(Entry<Integer, String> entry: hashMap.entrySet()) {
System.out.println(entry.getKey() + entry.getValue());
}
//Entry가 지원하는 method에는 key와 value에 대한 getter, setter가 지원된다.
}
}
<aside> ✔️ 참고 블로그
</aside>
Java에서의 HashMap은 순서가 없다 (unordered_map)이다. 따라서 순서를 주기 위해서는 순서가 있는 ArrayList로 바꿔서 정렬을 해줘야 한다. HashMap은 key와 value 두 가지로 이루어져 있다. 그렇기에 key를 기준으로 정렬할수도, value를 기준으로 정렬할수도 있다.
//Key를 기준으로 정렬
Set<String> keySet = map.keySet();
List<String> keyList = new ArrayList<String>(keySet);
Collections.sort(keyList, Comparator.naturalOrder());
Map<String, Integer> top5 = new HashMap<String, Integer>();
for(int i=0; i<5; i++) {
top5.put(keyList.get(i), map.get(keyList.get(i)));
}
위에서 언급한것 처럼 map.keySet(); 을 이용해 key들을 모두 빼내어 ArrayList로 가져온다. 그리고 sort를 해서 순서대로 5개만 새로운 hashMap에 넣어준다.