본문 바로가기

# 02/Java

[윤성우 열혈자바] 30-2. 스트림의 중간 연산 맵핑(Mapping)에 대한 추가 정리 [Stream의 map 시리즈 메소드들] 1:1 맵핑 Stream map(Function mapper)IntStream mapToInt(ToIntFunction mapper)LongStream mapToLong(ToLongFunction mapper)DoubleStream mapToDouble(ToDoubleFunction mapper) [Stream의 flatMap 시리즈 메소드들] 1:* 맵핑 Stream flatMap(Function mapper)IntStream flatMapToInt(Function mapper)LongStream flatMapToLong(Function mapper)DoubleStream flatMapToDouble(Function map..
[윤성우 열혈자바] 30-1. 스트림의 생성과 연결 스트림의 생성: 스트림 생성에 필요한 데이터를 직접 전달 static Stream of(T t) static Stream of(T...values) public static void main(String[] args) { Stream.of(11, 22, 33, 44) // 네 개의 값으로 이뤄진 스트림 생성 .forEach(n -> System.out.print(n + "\t")); System.out.println(); Stream.of("So Simple") // 하나의 String 인스턴스로 이뤄진 스트림 생성 .forEach(s -> System.out.print(s + "\t")); System.out.println(); List sl = Arrays.asList("Toy", "Robot", "..
[윤성우 열혈자바] 29-3. 리덕션, 병렬 스트림 리덕션과 reduce 메소드 : 최종 연산 리덕션(Reduction)데이터를 축소하는 연산T reduce(T identity, BinaryOperator accumulator) // Stream에 존재 // BinaryOperator T apply(T t1, T t2) public static void main(String[] args) { List ls = Arrays.asList("Box", "Simple", "Complex", "Robot"); BinaryOperator lc = (s1, s2) -> { if(s1.length() > s2.length()) return s1; else return s2; }; String str = ls.stream() .reduce("", lc); // 스트림 빈..
[윤성우 열혈자바] 29-2. 필터링과 맵핑 필터링 필터링: 스트림을 구성하는 데이터 중 일부를 조건에 따라 걸러내는 연산 Stream filter(Predicate
[윤성우 열혈자바] 29-1. 스트림의 이해와 스트림의 생성 스트림(Stream)의 이해 • 정화 파이프 A형 24종의 유기 화합물을 걸러낸다.• 정화 파이프 C형 일반 세균과 대장균 그리고 입자상의 불순물을 제거한다.• 플랑크 파이프 물고기가 살도록 적정량의 플랑크톤을 공급하는 파이프이다. 정화 파이프 A형 ⇨ 정화 파이프 C형 ⇨ 플랑크 파이프 정화 파이프 C형 ⇨ 정화 파이프 A형 ⇨ 플랑크 파이프 중간 파이프(중간 연산) 최종 파이프(최종 연산) 스트림을 생성하고 이를 대상으로 ‘중간 연산’과 ‘최종 연산’을 진행하면, 원하는 기준으로 데이터를 필터링하고 필터링 된 데이터의 가공된 결과를 얻을 수 있다. 그것도 매우 적은 양의 코드로 말이다. 스트림의 첫 번째 예제와 이해 public static void main(String[] args) { int[] ..
[윤성우 열혈자바] 28-3. OptionalInt, OptionalLong, OptionalDouble 클래스 Optional과 OptionalXXX와의 차이점 public static void main(String[] args) { Optional oi1 = Optional.of(3); Optional oi2 = Optional.empty(); System.out.print("[Step 1.] : "); oi1.ifPresent(i -> System.out.print(i + "\t")); oi2.ifPresent(i -> System.out.print(i)); System.out.println(); System.out.print("[Step 2.] : "); System.out.print(oi1.orElse(100) + "\t"); System.out.print(oi2.orElse(100) + "\t"); Sy..
[윤성우 열혈자바] 28-2. Optional 클래스 NullPointerException 예외의 발생 상황 1 class Friend { // 친구 정보 String name; Company cmp; // null 일 수 있음 public Friend(String n, Company c) { name = n; cmp = c; } public String getName() { return name; } public Company getCmp() { return cmp; }} class Company { // '친구 정보'에 속하는 '회사 정보' String cName; ContInfo cInfo; // null 일 수 있음 public Company(String cn, ContInfo ci) { cName = cn; cInfo = ci; } public S..
[윤성우 열혈자바] 28-1. 메소드 참조 메소드 참조의 4가지 유형과 메소드 참조의 장점 ● static 메소드의 참조 ● 참조 변수를 통한 인스턴스 메소드 참조 ● 클래스 이름을 통한 인스턴스 메소드 참조 ● 생성자 참조 기본적으로 람다식보다 조금 더 코드를 단순하게 할 수 있다는 장점이 있다.일부 람다식을 메소드 참조로 대신하게 할 수 있다. static 메소드의 참조 : 람다식 기반 예제 Consumer void accept(T t) Collections 클래스의 reverse 메소드 기반 예제public static void reverse(List list) // 저장 순서를 뒤집는다. class ArrangeList {public static void main(String[] args) {List ls = Arrays.asList(1,..