[JAVA8] 자바 8 API의 기본 메소드 & 스태틱 메소드

조성권·2021년 12월 5일
0
post-thumbnail

오늘은 자바 8 API 중 자주 사용되는 기본 메소드/스태틱 메소드에 대해 알아보도록 하겠다.

1. Iterable 기본 메소드

forEach()

forEach는 Iterable 형태의 Object에 대해 순회하며 무언가를 처리할 때 사용된다.
forEach의 param형태는 앞서 배운 함수형 인터페이스 중 하나인 Consumer<T>이다.

Iterable Object의 대표적인 것이 List이므로 이를 예시로 코드를 작성해보겠다.

List<String> list = new ArrayList<String>();

list.add("a");
list.add("b");
list.add("c");
list.add("d");

// case 1
list.forEach(s -> System.out.println(s));

// case 2
list.forEach(System.out::println);

다음과 같이 작성하면 a,b,c,d가 차례대로 출력되는 것을 확인할 수 있다.

이외에도 spliterator() 등 다양한 메소드가 존재하므로 찾아보면 좋을 것 같다.

2. Collection 기본 메소드

stream()

스트림은 '데이터의 흐름'이자 람다표현식을 활용할 수 있는 기술 중 하나이다.
보통 단독으로 사용되기 보단 추가적인 조건함수와 함께 사용된다.

예시를 통해 확인해보도록 하자.

List<String> list = new ArrayList<String>();

list.add("a");
list.add("b");
list.add("ac");
list.add("d");

long count = list.stream().map(String::toUpperCase)
.filter(s->s.startsWith("A"))
.count();

System.out.println(count);

위 예시에 대한 설명은 다음과 같다.
1. List Object에 대해 stream()을 통해 Stream형태로 변환한다.
2. map()을 통해 Stream 요소들에 대해 대문자로 변환한다.
3. filter()를 통해 A로 시작하는 문자열들만 뽑아낸다.
4. count()를 통해 남은 문자열들에 대한 갯수를 long형태로 return한다.

removeIf(Predicate<T> p)

removeIf는 Predicate의 body 조건에 해당하는 것들을 제외한 것만 다시 반환하는 역할을 한다.

List<String> list = new ArrayList<String>();

list.add("a");
list.add("b");
list.add("ac");
list.add("d");

list.removeIf(s-> s=="a");
list.forEach(s->{System.out.println(s);});	// b, ac, d

위 예시에 대한 설명은 다음과 같다.
1. list에 해당하는 요소들 중, "a"인 요소만 제외하고 다시 list를 구성한다.
2. forEach()를 통해 다시 구성된 list를 출력한다.

Colletion 역시 다양한 기본으로 제공하는 메소드가 존재하지만 가장 많이 사용될법만 두가지 예시만 기재해본다.

profile
천천히, 완벽히 배워나가고자 하는 웹 서비스 엔지니어

0개의 댓글