Java 8부터 Stream을 이용하여 람다함수형식으로 배열의 요소들을 처리가 가능해졌다.
ArrayList<string> list = new ArrayList<>(Arrays.asList("Apple","Banana","Melon"));
요소들을 특정조건에 해당하는 값을 변환
ex. 대/소문자 변형 등의 작업을 하고 싶을 때 사용 가능
list.stream().map(s->s.toUpperCase());
list.stream().map(String::toUpperCase);
// Collectors.joining을 이용해 출력
System.out.pritln(list.stream().map(s->s.toUpperCase()).collect(Collectors.joining(" ")));
// APPLE BANANA MELON
// Collctors.toList를 이용해 출력 -> String 리턴
System.out.println(list.stream().map(s->s.toUpperCase()).collect(Collectors.toList()));
[APPLE, BANANA, MELON]
// forEach를 이용해 출력 -> 리스트 리턴
list.stream().map(String :: toUpperCase).forEach(s -> System.out.println(s));
//APPLE
//BANANA
//MELON
filter는 요소를 특정 기준으로 걸러냄
ex. 요소의 크기가 5이상인 값 반환
list.stream().filter(t->t.length()>5)
System.out.println(list.stream().filter(t->t.length()>5).collect(Collectors.toList()));
// [Banana]
리스트의 요소를 정렬
list.stream().sorted()
System.out.println(list.stream().sorted().collct(Collectors.toList()));
// [Apple, Banana, Melon]
List<String> elements = Arrays.asList("a", "a1", "b", "b1")
// parallel()로 stream 병렬처리
Optional<String> firstElement = element.stream().parallel()
.filter(s -> s.startsWith("b"))
.findAny();
System.out.println("findAny: " + firstElement.get());
// findAny: b1 혹은 findAny: b
List<String> elements = Arrays.asList("a", "a1", "b", "b1")
// parallel()로 stream 병렬처리
Optional<String> firstElement = element.stream().parallel()
.filter(s -> s.startsWith("b"))
.findFirst();
System.out.println("findFrist: " + firstElement.get());
// findFirst: b