Java8 API에 추가된 여러가지 메소드 중 자주 사용하는 메소드를 알아보자.
List<String> names = new ArrayList<>();
name.add("Amy");
name.add("Bob");
name.add("Chris");
name.add("Doby");
Iterable
forEach()
순회 기능
아무것도 리턴하지 않기 때문에 Consumer 인터페이스가 들어온다.
//1
names.forEach(s -> {
System.out.println(s);
});
//2
names.forEach(System.out::println);
spliterator()
split 기능이 있는 iterator
보통 iterator는 hasNext() 를 사용하는데, spliterator는 tryAdvance()를 사용한다.
역시 Consumer 인터페이스가 들어온다.
Spliterator<String> spl1 = names.spliterator();
Spliterator<String> spl2 = sp1.trySplit(); //이 때 절반으로 쪼개진다.
while(spl1.tryAdvance(System.out::println));
System.out.println("-------");
while(spl1.tryAdvance(System.out::println));
/*출력 결과
Chris
Doby
-------
Amy
Bob
*/
Collection
콜렉션은 사실 Iterable을 상속받는 인터페이스이기 때문에 Iterable과 비슷하다.
stream() / parallelStream()
(다음 강의에서 자세히 살펴볼 예정!)
removeIf(Predicate)
조건에 맞는 값을 제거
boolean값을 리턴하는 Predicate을 넘겨주면 된다.
names.removeIf(s -> s.startWith("C"));
name.forEach(System.out::println);
/*출력 결과
Amy
Bob
Doby
*/
spliterator()
Comparator (Functional Interface)
reversed()
Comparator<String> ctic = String::compareToIgnoreCase;
names.sort(ctic.reversed());
names.forEach(System.out::println);
/*출력 결과
Doby
Chris
Bob
Amy
*/
thenComparing()
이미 정렬을 하고난 뒤, 추가로 정렬하고 싶을 때 사용한다.
static reverseOrder() / naturalOrder()
static nullsFirst() / nullsLast()
null의 정렬 우선성을 높게 하여 앞쪽으로 밀어줄지, 반대로 낮게하여 뒤쪽으로 둘지 결정한다.
static comparing()
이 포스팅은 더 자바, Java 8 강의를 수강하며 작성되었습니다.
더 자바, Java 8 강의 | 백기선 - 인프런
백기선 | 자바 8에 추가된 기능들은 자바가 제공하는 API는 물론이고 스프링 같은 제 3의 라이브러리 및 프레임워크에서도 널리 사용되고 있습니다. 이 시대의 자바 개발자라면 반드시 알아야 합
www.inflearn.com
'Java' 카테고리의 다른 글
[Java8] Stream API (0) | 2024.07.31 |
---|---|
[Java8] Stream (0) | 2024.07.28 |
[Java8] 인터페이스 메소드 (2) | 2024.07.22 |
[Java8] 메소드 참조 (Method Reference) (0) | 2024.07.19 |
[Java8] 람다 표현식 (lambda) (0) | 2024.07.14 |