Java 스트림 if/else 로직
1. forEach() 내의 기존 if/else 로직 먼저 정수 목록을 만든 다음 정수 스트림 forEach() 메서드 내에서 기존 if/else 로직을 사용한다. List<Integer> ints = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); ints.stream() .forEach(i -...
1. forEach() 내의 기존 if/else 로직 먼저 정수 목록을 만든 다음 정수 스트림 forEach() 메서드 내에서 기존 if/else 로직을 사용한다. List<Integer> ints = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); ints.stream() .forEach(i -...
1. 스트림 API 사용 Stream API는 Object 클래스의 equals() 메서드를 기반으로 목록의 다양한 요소를 반환하는 Unique() 메서드를 제공한다. 그러나 특정 속성으로 필터링하려는 경우 유연성이 떨어진다. 대안 중 하나는 상태를 유지하는 필터를 작성하는 것이다. 1) 상태 저장 필터 사용 가능한 솔루션 중 하나는 상태 저장 조...
1. Intermediate 및 Terminal Operations 모든 스트림 작업은 중간 작업과 터미널 작업으로 구분되며 결합되어 스트림 파이프라인을 형성한다. 스트림 파이프라인은 소스(예: Collection, array, generator function, I/O 채널 또는 무한 시퀀스 생성기)로 구성된다. 0개 이상의 중간 작업과 터미널 작...
1. 원인 Java 8에서 각 Stream 클래스는 일회용 데이터 시퀀스를 나타내며 여러 I/O 작업을 지원한다. Stream은 한 번만 작동해야 한다(중간 또는 터미널 Stream 작업 호출). Stream 구현은 Stream이 재사용되고 있음을 감지하는 경우 IllegalStateException을 발생시킬 수 있다. Stream 개체에서 터미...
1. Iterable을 스트림 으로 변환 Iterable 인터페이스는 일반성을 염두에 두고 설계되었으며 자체적으로 stream() 메서드를 제공 하지 않는다. 간단히 말해서 이를 StreamSupport.stream() 메서드에 전달하고 지정된 Iterable 인스턴스에서 Stream을 가져올 수 있다. Iterable 인스턴스를 고려해 본다. ...
1. Stream API를 사용하여 문자열 결합 Stream API를 사용하여 String 배열을 쉼표로 구분된 String으로 결합하는 함수를 만들어 본다. public static String join(String[] arrayOfString){ return Arrays.asList(arrayOfString) .stream() ...
1. Optional의 Map과 Flatmap map() 메소드는 Optional과 잘 작동한다. 함수가 필요한 정확한 유형을 반환하는 경우이다. Optional<String> s = Optional.of("test"); assertEquals(Optional.of("TEST"), s.map(String::toUpperCase)); 그...
1. List to Map List를 Map으로 변환하는 가장 간단한 방법이다. Book 클래스를 정의하는 방법은 다음과 같다. class Book { private String name; private int releaseYear; private String isbn; // getters and setters...
1. 표준 자바 사용 1) Java의 toUnmodifyingList 사용 Java 10부터 Java의 Collectors 클래스에서 toUnmodifyingList 메서드를 사용할 수 있다. List<String> givenList = Arrays.asList("a", "b", "c"); List<String> result ...
1. Filtering Collector Collectors.filtering은 Stream filter()와 유사하다. 입력 요소를 필터링하는데 사용되지만 다른 시나리오에 사용된다. Stream의 필터는 스트림 체인에서 사용되는 반면 필터링은 groupingBy와 함께 사용되도록 설계된 Collector 이다. Stream의 필터를 사용하면 값을 ...