본문 바로가기

Knowledge Wiki/Java

(51)
JAVA 스트림 그룹화, 분할 - partitioningBy(), groupingBy() 1. 스트림의 그룹화와 분할 partitioningBy()는 스트림을 2 분할한다. groupingBy()보다 빠르다. groupingBy()는 스트림을 n분할한다. Map stuBySex = stuStream.collect(partitioningBy(Student::isMale)); // 학생들을 성별로 분할 List maleStudent = stuBySex.get(true); // 남학생 목록 List femaleStudent = stuBySex.get(false); / /여학생 목록 Map stuNumBySex = stuStream.collect(partitioningBy(Student::isMale, counting())); // 분할 + 통계 int maleCnt = stuNumBySex.get..
JAVA Collector 인터페이스, Collectors 클래스 1. Collector 인터페이스는 수집(collect)에 필요한 메서드를 정의해 놓은 인터페이스 2. Collectors 클래스는 다양한 기능의 컬렉터(Collector 인터페이스를 구현한 클래스)를 제공 long count = stuStream.count(); // 항상 전체 count long count = stuStream.collect(counting()); // 그룹별로 나눠서 counting할 수 있음. 여기선 그룹이 안나눠져있어서 위 코드와 같은 의미
JAVA 스트림 최종 연산 - reduce(), collect(), forEach() 1. 스트림 최종 연산의 핵심은 reduce()와 collect() 2. 스트림 최종 연산 - forEach() void forEach(Consumer
JAVA Optional 객체 1. Optional T 타입 객체의 래퍼 클래스 null을 직접 다루는 건 NullPointerException 발생 소지가 있기 때문에 위험함. 또 null을 그대로 쓰면 null체크등 코드가 지저분해짐. 그래서 Optional를 사용해서 null을 간접적으로 다룸. 2. null대신 빈 Optional 객체를 사용하자 Optional optVal = null; // 이렇게 쓰지 말자!! Optional optVal = Optional.empty(); // 빈 객체로 초기화 Optional optVal = Optional.empty(); // 생략 가능 3. Optional.isPresent() Optional객체의 값이 null이면 false, 아니면 true를 반환 // ifPresent(Cons..
JAVA 스트림 중간 연산, map(), flatmap(), sorted() 1. 스트림 중간 연산의 핵심은 map()과 flatmap() 2. 스트림 중간 연산 - sorted() 연산 Comparator의 comparing()으로 정렬 기준을 제공 studentStream.sorted(Comparator.comparing(Student::getBan)) .forEach(System.out::println); 추가 정렬 기준을 제공할 때는 thenComparing()을 사용 studentStream.sorted(Comparator.comparing(Student::getBan) .thenComparing(Student::getTotalScore() .thenComparing(Student::getName) .forEach(System.out::println); 3. 스트림 중간..
JAVA 람다식 iterate(), generate() a1. 람다식 iterate(), generate() iterate()는 이전 요소를 seed로 해서 다음 요소를 계산한다. Stream evenStream = Stream.iterate(0, n -> n + 2); // 0, 2, 4, 6, ... generate()는 seed를 사용하지 않는다. Stream randomStream = Stream.generate(Math::random); Stream oneStream = Stream.generate(()->1); // 1, 1, 1, 1 ...
JAVA 스트림 14. 스트림 다양한 데이터 소스(컬렉션, 배열)를 표준화된 방법으로 다루기 위한 것 Collections Framework의 사용방법이 드디어 통일됨 JDK 1.8에 나옴 15. Collection을 Stream으로 변환할 수 있음 Stream intStream = list.stream(); 16. 스트림 사용법 1) 스트림 만들기 2) 중간 연산을 n번 수행하기 3) 최종 연산 1번해서 결과 얻기 17. 스트림의 특징 1) 스트림은 데이터 소스로부터 데이터를 읽기만할 뿐 변경하지 않는다. 2) 스트림은 Iterator처럼 일회용이다.(필요하면 다시 스트림을 생성해야 함) 3) 스트림은 최종 연산 전까지 중간연산이 수행되지 않는다. (지연된 연산) 지연된 연산이기 때문에 무한 스트림도 사용할 수 있다...
JAVA 메서드 참조 1. 메서드 참조(method reference) 하나의 메서드만 호출하는 람다식은 '메서드 참조'로 간단히 할 수 있다. Function f = (String s) -> Integer.parseInt(s); Function f = Integer::parseInt; // 메서드 참조, 위 코드와 동일한 의미 2. 생성자의 메서드 참조 Function s = (i) -> new MyClass(i); Function s = MyClass::new; // 메서드 참조, 위 코드와 동일한 의미