Java8 스트림을 이용한 데이터 추출
JAVA/Java 8

Java8 스트림을 이용한 데이터 추출

반응형

스트림에 있는  데이터를 List, String, Set 다양한 형태로 변경하여 추출   있다.

toArray
Stream.toArray Object[] 리턴한다.
 
올바른 타입의 배열을 원하는 경우 다음과 같이 배열 생성자를 전달한다.
String[] result = words.toArray(String[]::new);
 
Collect 메소드
- Collect : 종료 작업으로 인자로 받은 형태의 데이터 타입으로 결과물을 생성한다
- Collect 병렬화를 지원한다또한 공급자누산자결합자를 기본적인 파라미터로 받으며 이는 
  Collectors라는 클래스를 통해 간편하게 정의하여 사용할  있다.

1) List, set, String



1
2
3
4
5
6
7
Stream<String> data = Stream.of("dd", "aa", "cc");
        
// stream 데이터를 list로 변환
List<String> result = data.collect(Collectors.toList());
        
// stream 데이터를 set으로 추출
Set<String> setdata = data.collect(Collectors.toSet()); 
cs




스트림에 있는 모든 문자열들을 서로 연결해서 모으려고 하는 경우 다음과 같이 호출   있다.
 

문자 이어 붙히기


1
2
3
4
5
6
7
Stream<String> data = Stream.of("dd", "aa", "cc");
        
// 데이터 이어 붙히기
String temp = data.collect(Collectors.joining());
System.out.println(temp);
        
==> ddaacc 
cs




구분자 삽입하여 이어 붙히기

1
2
3
4
5
6
7
8
9
10
public static void main(String args[]) {
        
    Stream<String> data = Stream.of("dd""aa""cc");
        
    // 데이터 이어 붙히기
    String temp = data.collect(Collectors.joining("||"));
    System.out.println(temp);    
}
 
==> dd||aa||Cc
cs


그룹핑과 파티셔닝
그룹핑

 
Stream 들어있는 데이터 중에 성질이 같은 값들의 그룹을 만들어서 사용하고자  경우가 있을 것이다.
Stream collect 메소드의 구분자로 Collectors.groupingby 사용하며 기준은 Person dept 사용하여 그룹핑을 한다.




 다운스트림 컬렉터(downStream Collector)
 -> 그룹핑 결과를 List 반환하지 않고 특별히 기재한 방식으로 출력하도록 해주는 


1) set으로 출력




2) 분류된 데이터의 개수를 출력






파티셔닝
리턴되는 값이 boolean 분류 함수인 경우에는 groupingBy 대신 partitioningBy 사용하면 스트림 요소가 true, false 리턴하는 두개의 리스트로 구분된다.




반응형