개발
java 배열에서 동일한 내용의 카운트를 체크해보자.
cozynow
2020. 11. 22. 01:28
아래와 같은 배열에서 각 요소의 건 수를 카운트해서 출력해 보자.
["손오공", "사오정", "토마토", "손오공", "저팔계", "삼장법사", "손오공", "저팔계"]
물론 for문과 if문을 사용하기 말고 해야한다면....?
아래 2가지 방법을 소개했다.
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
public class Hash01 {
public static void main(String[] args) {
String[] participant = {"손오공", "사오정", "토마토", "손오공", "저팔계", "삼장법사", "손오공", "저팔계"};
Map<String, Long> participantMap = Arrays.asList(participant).stream()
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
participantMap.forEach((key, value) -> System.out.println("key : "+ key + ", value : "+ value));
System.out.println("==========");
HashMap<String, Integer> hm = new HashMap<>();
for(String player : participant) hm.put(player, hm.getOrDefault(player, 0) +1);
hm.forEach((key, value) -> System.out.println("key : "+ key + ", value : "+ value));
}
}
1. 스트림을 이용해서 건 수를 체크해서 맵에 담았다.
2. 맵에서 1.8 버전 부터 지원하는 getOrDefault를 함수를 사용했다.
- 한땐, null 여부를 체크해서 값을 셋팅해줬는데
역시 코딩은 계속 해야한다.