728x90
반응형
최댓값, 최솟값 바로 출력
1. Collections 이용
//최댓값
Collections.max(map.entrySet(), Map.Entry.comparingByValue()).getKey()
//최솟값
Collections.min(map.entrySet(), Map.Entry.comparingByValue()).getKey())
2. Stream 이용
//최댓값
map.entrySet().stream().max((entry1, entry2) -> entry1.getValue() > entry2.getValue() ? 1 : -1).get().getKey();
//최솟값
map.entrySet().stream().min((entry1, entry2) -> entry1.getValue() > entry2.getValue() ? 1 : -1).get().getKey();
값을 찾고 나서 따로 출력
int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;
for (int y : map.values()) {
min = Math.min(y, min);
}
for (int y : map.values()) {
max = Math.max(y, max);
}
값으로 키 출력
1. Keyset이용
//keySet이용
for (Character key : map.keySet()) {
Integer value = map.get(key);
System.out.print(key + " " + value + ", ");
}
2. entrySet이용
for (Map.Entry<Character, Integer> entry : map.entrySet()) {
char key = entry.getKey();
int value = entry.getValue();
System.out.print(key + " " + value + ", ");
}
package hashtree04_2;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Valuetokey {
public void solution(int n, String str) {
char[] arr = str.toCharArray();
HashMap<Character, Integer> map = new HashMap<>();
for (int i = 0; i < n; i++) {
map.put(arr[i], map.getOrDefault(arr[i], 0) + 1);
}
// 1. Collections을 이용한 최댓값, 최솟값 키 찾기
System.out.println("Collections 이용 : " + Collections.max(map.entrySet(), Map.Entry.comparingByValue()).getKey()
+ " " + Collections.min(map.entrySet(), Map.Entry.comparingByValue()).getKey());
// 2. Stream을 이용한 최댓값, 최솟값 키 찾기
System.out.println("Stream 이용 : "
+ map.entrySet().stream().max((entry1, entry2) -> entry1.getValue() > entry2.getValue() ? 1 : -1).get()
.getKey()
+ " " + map.entrySet().stream().min((entry1, entry2) -> entry1.getValue() > entry2.getValue() ? 1 : -1)
.get().getKey());
// value로 키 가져오기
int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;
for (int y : map.values()) {
min = Math.min(y, min);
}
for (int y : map.values()) {
max = Math.max(y, max);
}
// 1. keySet()이용
System.out.println("keySet이용");
for (Character key : map.keySet()) {
Integer value = map.get(key);
System.out.print(key + " " + value + ", ");
if (value == min) {
System.out.println("keySet 이용한 min:"+key);
}
if (value == max) {
System.out.println("keySet 이용한 max:"+key);
}
}
System.out.println();
// 2. entrySet() 이용
System.out.println("entrySet이용");
for (Map.Entry<Character, Integer> entry : map.entrySet()) {
char key = entry.getKey();
int value = entry.getValue();
System.out.print(key + " " + value + ", ");
if (value == min) {
System.out.println("entrySet 이용한 min:"+key);
}
if (value == max) {
System.out.println("entrySet 이용한 max:"+key);
}
}
}
public static void main(String[] args) {
Valuetokey T = new Valuetokey();
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
String str = kb.next();
T.solution(n, str);
}
}
728x90
반응형
'Java > Java 알고리즘 인프런' 카테고리의 다른 글
[Ch.07 - Recursive] 01. 재귀함수(스택프레임) (0) | 2022.06.22 |
---|---|
[Ch.04 - HashTree] 05. K번째 큰 수 # (+ TreeSet) (0) | 2022.06.08 |
[Ch.06 - SortSearch] 10. 마구간 정하기(결정알고리즘)## (+ 시뮬레이션) (0) | 2022.06.05 |
결정 알고리즘 (0) | 2022.06.05 |
[Ch.06 - SortSearch] 09. 뮤직비디오(결정알고리즘) ## (0) | 2022.06.05 |