OptionalInt, OptionalDouble, OptionalLong 컬렉션에 값이 없을 경우 집계 메서드를 사용하면 예외 발생된다. 예외방지 + default 값 설정하는 기능을 제공한다. 1. 컬렉션에 값이 존재하는 경우 List list = new ArrayList(); list.add(10); list.add(25); OptionalDouble avg = list.stream() .mapToDouble(a->a) .average(); System.out.println(avg); //OptionalDouble[17.5] System.out.println(avg.getAsDouble()); //17.5 System.out.println(avg.orElse(0.0)); //17.5 - 값이 있다면..
collect(partitioningBy(Predicate)) => true 값과 false로 나누어서 반환 collect(Collectors.groupingBy(Function)) => Function에서 리턴값으로 그룹핑해서 반환 8. 성별 분류 //익명클래스 Predicate predicate = new Predicate() { @Override public boolean test(Stu t) { return t.isMale(); } }; Map xxx = Stream.of(stuArr).collect(Collectors.partitioningBy(predicate)); List male = xxx.get(true); List female = xxx.get(false); System.out.prin..
통계처리 IntStream, LongStream, DoubleStream 의 집계 메서드 **합계: sum() 평균: average() 최대: max() 최소: min() 갯수: count()** int[] arr = {1,2,3,4,5}; 합계: sum() int sum = Arrays.stream(arr) .sum(); System.out.println("합계:" + sum); sum = Arrays.stream(arr) .filter(n->n%2==0) .sum(); System.out.println("짝수의 합계:" + sum); //합계:15 //짝수의 합계:6 평균: average() double avg = Arrays.stream(arr) .average() .orElse(0.0); Syst..
최종처리 단계에서 요소들이 특정 조건에 만족여부 확인 allMatch(Predicate): 모든 요소들이 Predicate 조건에 일치하는지 체크 anyMatch(Predicate): 일부분의 요소들이 Predicate 조건에 일치하는지 체크 noneMatch(Predicate): 모든 요소들이 Predicate 조건에 일치하지 않는지 체크 => 최종 결과는 boolean 값으로 반환 --- int[] arr = {1,2,3,4,5}; allMatch(Predicate) //익명클래스 IntPredicate predicate = new IntPredicate() { @Override public boolean test(int t) { return t < 10; } }; //모든 요소가 10보다 작냐? b..
int[] arr = {1,2,3,4,5}; boxed() : 기본형 ⇒ 참조형 //가. boxed(): int ---> Integer IntStream s = Arrays.stream(arr); s.boxed() .forEach(System.out::println); //1 //2 //3 //4 //5 asDoubleStream() IntStream => DoubleStream LongStream => DoubleStream //나. asDoubleStream(): 정수 ---> 실수 Arrays.stream(arr) .asDoubleStream() .forEach(System.out::println); //1.0 //2.0 //3.0 //4.0 //5.0
class Person{ String username; int score; public Person() {} public Person(String username, int score) { this.username = username; this.score = score; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public int getScore() { return score; } public void setScore(int score) { this.score = score; } @Override public String toStr..
distinct 중복제거 //컬렉션에서 Stream 생성 List list = Arrays.asList("홍길동", "이순신", "유관순", "이순신"); //1. 중간처리 (중복제거- distinct) list.stream() .distinct() .forEach(System.out::println); //홍길동, 이순신, 유관순 filter 필터링 //익명함수 Predicate predicate = new Predicate() { @Override public boolean test(String t) { return t.startsWith("이"); } }; //filter list.stream() .filter(predicate) .forEach(System.out::println); //람다표현식..
1. 컬렉션에서 Stream 생성 //1. 컬렉션에서 Stream 생성 List list = Arrays.asList("홍길동", "이순신", "유관순"); Stream s = list.stream(); //스트림얻기. 중간처리,최종처리를 할 수 있음. System.out.println("스트림 요소 갯수: " + s.count()); //스트림 요소 갯수: 3 //익명클래스 Consumer c = new Consumer() { @Override public void accept(String t) { System.out.println(t); } }; //s라는 변수를 계속 반복적으로 쓸수 없기 때문에 새로운 스트림을 얻어 forEach할때 사용 list.stream().forEach(c); System...
개요 JDK 8에 추가됨 (java.util.stream 패키지) 기본적으로 표준 API 함수적 인터페이스 사용함 기존에 사용했던 컬렉션(List, Set, Map)은 데이터를 저장하는 역할에 촛점을 맞춤 자바 스트림 API를 이용하면 컬렉션에 저장된 데이터를 연산(중간처리, 최종처리)이 가능하다. 중간처리: 컬렉션에 지정된 데이터를 정렬, 중복제거, 필터링, skip 등의 작업 최종처리: 컬렉션에 지정된 데이터를 중간처리를 거쳐서 나온 값들을 반복출력, 타입변환(List→Map), 그룹핑, 통계처리(합계,평균,최대,최소,갯수) 등의 작업 ⇒ 자바코드로 SQL 같은 작업을 할 수 있다. 자바 스트림 API 이용 3단계 컬렉션(배열)에서 스트림을 생성 List list = Arrays.asList("홍길동..