본문 바로가기
자료구조&알고리즘/해시를 사용한 집합과 맵

해시맵

by _din 2022. 6. 17.

아..주 기본적인것만 다뤄본다..

 

선언방법

HashMap<K, V> hashmap = new HashMap<>();

 

삽입

hashmap.put(key, value)

 

조회

hashmap.get(key)

 

키 포함여부

hashmap.containsKey(key)

 

해시맵 정렬

1. 키가 문자열일 때 키 기준으로 오름차순 정렬

  • key를 배열에 저장하여 정렬
Object[] key = hashMap.keySet().toArray();
Arrays.sort(key);

for(Object s : key) {
    if(hashMap.get(s))
        bw.write(s+"\n");
}

 

2. 키가 문자열, 값이 정수형일 때 먼저 값을 기준으로 내림차순으로 정렬하고 값이 같을 때는 키를 오름차순으로 정렬

  • map을 list에 저장하여 정렬
List<Map.Entry<String, Integer>> enrtyList = new LinkedList<>(hashmap.entrySet());
enrtyList.sort(new Comparator<Map.Entry<String, Integer>>() {
    int ret = 0;
    @Override
    public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
        if (o1.getValue() == o2.getValue()){
            if(o1.getKey().compareTo(o2.getKey()) < 0) {
                ret = -1;
            } else if(o1.getKey().compareTo(o2.getKey()) == 0) {
                ret = 0;
            } else if(o1.getKey().compareTo(o2.getKey()) > 0) {
                ret = 1;
            }
        } else {
            ret = o2.getValue() - o1.getValue();
        }
        return ret;
    }
});
  • 문자열의 compareTo
    기준값.compareTo(비교값)
    : 서로 문자열 길이의 차이값을 리턴
  • 양수 : 기준값이 사전순으로 뒤에 있다.
  • 음수 : 기준값이 사전순으로 앞에있다.

 

반응형

댓글