코테 문제들을 풀면서 나중에 써볼만한 스트림 함수나 표현들이 보이면 여기다 꾸준히 쌓아두려고 한다.
스트림을 배워서 자주 써먹을거냐 하면 그건 아닌데, 그래도 확실히 편해보이는 것들만 가져다 쓰면 좋을 것 같다.
class Solution {
public int[] solution(int[] numList, int n) {
return Arrays.stream(numList)
.boxed()
.sorted((a, b) -> Math.abs(a - n) == Math.abs(b - n) ? b.compareTo(a) : Integer.compare(Math.abs(a - n), Math.abs(b - n)))
.mapToInt(Integer::intValue)
.toArray();
}
}
class Caesar {
public String caesar(String s, int _n) {
return s.chars().map(c -> {
int n = _n % 26;
if (c >= 'a' && c <= 'z') {
return 'a' + (c - 'a' + n) % 26;
} else if (c >= 'A' && c <= 'Z') {
return 'A' + (c - 'A' + n) % 26;
} else {
return c;
}
}).mapToObj(c -> String.valueOf((char)c))
.reduce((a, b) -> a + b).orElse("");
}
public static void main(String[] args) {
Caesar c = new Caesar();
System.out.println("s는 'a B z', n은 4인 경우: " + c.caesar("a B z", 4));
}
}