<aside> ☑️ HashMap - 참조문헌

  1. HashMap 사용방법

  2. HashMap 코드와 개념 (좋음)

  3. HashMap 코딩 팩토리 (좋음)

  4. HashMap key value

</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가 지원된다.

	}
}

HashMap으로 정렬하는 4가지 방법

<aside> ✔️ 참고 블로그

  1. HashMap에서 key로 오름 내림차순, value로 오름 내림차순

</aside>

Java에서의 HashMap은 순서가 없다 (unordered_map)이다. 따라서 순서를 주기 위해서는 순서가 있는 ArrayList로 바꿔서 정렬을 해줘야 한다. HashMap은 key와 value 두 가지로 이루어져 있다. 그렇기에 key를 기준으로 정렬할수도, value를 기준으로 정렬할수도 있다.

Key값을 기준으로 정렬하기

//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에 넣어준다.

Value값을 기준으로 정렬하기