알고리즘은 아니지만 코딩테스트 문제를 풀다가 자주 사용하는 HashMap자료구조를 사용할때마다 사용법을 검색해서 보곤 했는데 확실하게 문제를 풀면서 자주 사용하는 메소드를 정리하도록 하자!
Map은 기존의 JFC와는 다르게 Key, Value가 존재한다.
Key는 중복을 허용하지 않는 ID값이며, Value는 중복을 허용하는 Data 값이다.
또한 기본적으로 Map은 순서를 유지하고 있지 않는다.
Map이라는 인터페이스를 통해 자바에서는 4가지의 Map이 있다.
HashMap<(type)K,(type)V> 변수명 = new HashMap<>();
map.put(K,V) //가장 기본적인 삽입법
map.put(K,getorDefault(K,0)+1) // 자주 사용하는데, K값이 그 전에 없으면 1, 있으면 계속 추가.
for(Map.Entry<K,V> 변수명 : 선언했던 HashMap 변수명.entrySet()){
변수명.getKey() // Key값
변수명.getValue() //Value값
}
변수명.keySet() // Key값 리스트들
변수명.values() //Value값 리스트들
변수명.get(K) // key에 해당하는 value값
Map<String, String> map = new HashMap<>(); // map선언
List<String> keyList = new ArrayList<>(map.keySet()); // key값들에대해 리스트 생성
keyList.sort((s1, s2) -> s1.compareTo(s2));
위의 코드에서 Comparator (s1, s2)->s1.compareTo(s2)는 String::compareTo로 대체가능 하다한다.
Map<String, String> map = new HashMap<>(); // map선언
List<String> valueList = new ArrayList<>(map.values());
valueList.sort(String::compareTo);