일반적인 Map 사용
char[] input = "bbbaa".toUpperCase().toCharArray();
Map<Character, Integer> map = new HashMap<>();
for (Character c : input) {
int cnt = 0;
for (char i : input) {
if(c == i) cnt++;
}
map.put(c, cnt);
}
map.entry 를 사용하지 않을 때
keySet을 반복하고, Map.get으로 해당 값을 얻는다.
for (Character c : map.keySet()) {
System.out.println("c = " + c + "=" + map.get(c));
}
결과
c = A=3 c = B=2 |
map.entry 를 사용하였을 때
key-value의 데이터를 결합된 형태로 Set에 저장하여 반환해준다. 위와같이 keySet -> get(key) 형태로 하지 않아도 같은 결과를 출력한다.
List<Map.Entry<Character, Integer>> m = new ArrayList<>(map.entrySet());
for (Map.Entry<Character, Integer> c : m) {
System.out.println("c = " + c);
}
결과
c = A=3 c = B=2 |
정렬식(List.sort()사용)
List.sort()는 List의 크기만큼 요소들을 두 개씩 비교하면서 정렬을 진행한다
entry1과 entry2는 각 비교 단계에서 List에 있는 Map.Entry 객체 두 개를 자동으로 가리킨다(직접 entry1, entry2 변수를 지정할 필요없이 List.sort()가 자동으로 처리해준다)
m.sort((entry1, entry2) -> {
int descVal = entry2.getValue().compareTo(entry1.getValue());
return descVal;
});
결과
m = [A=3, B=2] |
'JAVA' 카테고리의 다른 글
Jakarta Mail(JavaMail) API (0) | 2025.02.11 |
---|---|
중첩 클래스 (0) | 2024.12.22 |
동시성 문제와 동기화(synchronized) (0) | 2024.11.24 |
멀티스레드 메모리 접근 방식/메모리 가시성/happens-before (0) | 2024.11.21 |
스레드와 Yield (0) | 2024.11.18 |