Java

[Java8] Java8 API의 메소드

나프초 2024. 7. 25. 21:34

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