1. array <-> stream
int array -> Arrays.stream(.. )으로 바꾸면 intStream()이 되므로 Integer stream으로 바꾸려면 .boxed()를 써야한다.
//cards {1,2,2, 7, 9, 9, 8} 중에 pair들 빼고 최대 값구하기
public static int solutions(int[] cards) {
Map<Integer, Long> counting = Arrays.stream(cards).boxed() //intStream()을 stream()으로 바꿔야함
.collect(Collectors.groupingBy( i->i, Collectors.counting())) //<Integer, Long>
;
Integer ret = counting.entrySet().stream()
.filter( e -> e.getValue() == 1)
.map( e -> e.getKey())
.max( Integer::compare ) //need STUDY max(Comparator 임)
.orElse(-1); //.intValue();
//TEST code: 둘다 오류임 : study필요
// Integer ret = Arrays.stream(cards).boxed()
// .max(Comparator.comparingInt());
// .max(Integer.compare());
return ret;
}
ERROR FIX: Inreger.compare() => Integer::compare & add. .orElse(-1)
Integer::compare 대신에 Comparator.comparing(e -> e) 도 됨.