1. Map이란?

  • key와 value의 쌍으로 이루어진 데이터의 집합
  • 순서 유지 X
  • key 중복 X, 값 중복 O
  • 구현클래스 : HashMap, TreeMap, Hashtable, Properties 등


2. 기본 메서드

Map<String, String> map = new HashMap<>();

map.put("key", "value"); // key값이 이미 존재하는 경우 Value 값을 갱신
map.get("key");
map.containsKey("key");
map.remove("key");
map.size();

map.getOrDefault(String key, String defaultValue); // key가 있다면 value 반환, 없으면 defaultValue 반환


3. Map 활용하기

forEach

방법 1. keySet과 iterator 이용하여 key로 value 조회

Iterator<String> keys = map.keySet().iterator();
while(keys.hasNext()){
		String key = keys.next();
		String value = map.get(key);
}


방법 2. entrySet을 이용하여 forEach 문으로 Entry를 조회

for( Map.Entry<String, String> entry : map.entrySet() ){
		String key = entry.getKey();
		String value = entry.getValue();
}

for (Entry<String, String> entry : map.entrySet()) {
		String key = entry.getKey();
		String value = entry.getValue();
}


방법 3. keySet 이용하여 key로 value 조회

for(String key : map.keySet()){
		String strValue = map.get(strKey);
}


방법 4. (Java 1.8 이상) Lambda식 이용

map.forEach((key, value)->{
	System.out.println(key +":"+ value);
});


정렬

1) Key로 정렬

방법 1. keySet 이용하여 Collection.sort()

  • 내림차순 : Collection.reverse()
List<String> keySet = new ArrayList<>(map.keySet());

Collections.sort(keySet); // 오름차순
Collections.reverse(keySet); // 내림차순


방법 2. entrySet과 Lambda식 이용

List<Map.Entry<String, Integer>> entryList = new LinkedList<>(map.entrySet());
entryList.sort(((o1, o2) -> map.get(o1.getKey()) - map.get(o2.getKey()))); // 오름차순


2) Value로 정렬

방법 1. keySet을 compareTo() 이용하여 value 기준으로 정렬

List<String> keys = new ArrayList<>(map.keySet());
Collections.sort(keys, (v1, v2) -> (map.get(v1).compareTo(map.get(v2)))); // 오름차순


방법 2. entrySet과 Lambda식 이용

List<Map.Entry<String, String>> entryList = new LinkedList<>(map.entrySet());
entryList.sort(((o1, o2) -> o1.getValue().num - o2.getValue().num)); // 오름차순



참고 자료


Leave a comment