際際滷
Submit Search
Java stream v0.1
Aug 3, 2021
0 likes
16 views
H
Hyosang Hong
Java stream
Education
Read more
1 of 14
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
More Related Content
What's hot
(19)
PPTX
願 覦 Chap.14 れ Lambda expression(java)(KOR)
MIN SEOK KOO
油
PDF
Java8 & Lambda
蠍壱
油
PDF
れ, 貊襴郁骸 覈語伎 轟 (Swift, Kotlin and Modern Languages)
Yongha Yoo
油
PDF
濠 螻 襷覲願 讀蠍磯 ろ碁 API
Arawn Park
油
PDF
覦8 ろ碁 API 螳
beom kyun choi
油
PDF
JDK 覲豌
SeungHyun Eom
油
PPTX
[谿, 貊襴(Kotlin) 螳譬] 5. Control Flow
豕
油
PDF
Fp basic-kotlin
Myeongin Woo
油
PDF
覦8螳 2螳. Stream API
Sejong Park
油
PPTX
Java8
Jong Woo Rhee
油
PDF
れ 焔 危危蠍
Yongha Yoo
油
PPTX
(襷)願 覦 Chap.16 ろ碁&覲豌襴 Stream¶llel processing(java)
MIN SEOK KOO
油
PDF
Python Programming: Function
Chan Shik Lim
油
PDF
Swift3 generic
Eunjoo Im
油
PDF
10= =п 梶≡梶 =求 梶≡
油
PDF
Do swift: Swift 覓伎 企慨蠍
YoonBong Steve Kim
油
PPTX
=求メ+ 求+求≡= 20160229
Yong Joon Moon
油
PPTX
=求メ+Operator+求≡= 20160409
Yong Joon Moon
油
PDF
伎2.7 蠍一 螻給 蟆 襴
Booseol Shin
油
願 覦 Chap.14 れ Lambda expression(java)(KOR)
MIN SEOK KOO
油
Java8 & Lambda
蠍壱
油
れ, 貊襴郁骸 覈語伎 轟 (Swift, Kotlin and Modern Languages)
Yongha Yoo
油
濠 螻 襷覲願 讀蠍磯 ろ碁 API
Arawn Park
油
覦8 ろ碁 API 螳
beom kyun choi
油
JDK 覲豌
SeungHyun Eom
油
[谿, 貊襴(Kotlin) 螳譬] 5. Control Flow
豕
油
Fp basic-kotlin
Myeongin Woo
油
覦8螳 2螳. Stream API
Sejong Park
油
Java8
Jong Woo Rhee
油
れ 焔 危危蠍
Yongha Yoo
油
(襷)願 覦 Chap.16 ろ碁&覲豌襴 Stream¶llel processing(java)
MIN SEOK KOO
油
Python Programming: Function
Chan Shik Lim
油
Swift3 generic
Eunjoo Im
油
10= =п 梶≡梶 =求 梶≡
油
Do swift: Swift 覓伎 企慨蠍
YoonBong Steve Kim
油
=求メ+ 求+求≡= 20160229
Yong Joon Moon
油
=求メ+Operator+求≡= 20160409
Yong Joon Moon
油
伎2.7 蠍一 螻給 蟆 襴
Booseol Shin
油
Similar to Java stream v0.1
(20)
PDF
2014.07.26 KSUG 讌れ 蟷 貉 碁碁 - 濠 螻 襷覲願 讀蠍磯 ろ碁 API(覦蟠)
JiandSon
油
PDF
, ろ碁 Api
Chi Hwan Choi
油
PPTX
覦 8
油
PDF
Java(1/4)
handfoot
油
PDF
Java advancd ed10
hungrok
油
PPTX
Just java
Jong Wook Kim
油
PDF
Java(3/4)
handfoot
油
PPTX
[HaU] 蠍一 覃伎 譴觜 java
襴
油
PDF
Java(4/4)
handfoot
油
PPTX
Java collections framework
蟆曙
油
PPTX
願 覦 Chap.11 蠍磯蓋 API 企(java)(KOR)
MIN SEOK KOO
油
PPT
Ai C#碁碁
Astin Choi
油
PDF
2014.07.26 KSUG 讌れ 蟷 貉 碁碁 - ′ メ罪メ =8 =戟=求 ()
JiandSon
油
PPTX
Programming java day2
Jaehoonyam
油
PPTX
Feel functional
WonJun Lee
油
PDF
5= ≡梶≡
SeoYeong
油
PDF
Effective java
Haeil Yi
油
PDF
Introduction to Fork Join Framework_SYS4U I&C
sys4u
油
PPTX
Kth螳覦 碁碁 1
Byeongsu Kang
油
PDF
2023.05.01 = = : 覦 蠍一
HONG YONG JUN
油
2014.07.26 KSUG 讌れ 蟷 貉 碁碁 - 濠 螻 襷覲願 讀蠍磯 ろ碁 API(覦蟠)
JiandSon
油
, ろ碁 Api
Chi Hwan Choi
油
覦 8
油
Java(1/4)
handfoot
油
Java advancd ed10
hungrok
油
Just java
Jong Wook Kim
油
Java(3/4)
handfoot
油
[HaU] 蠍一 覃伎 譴觜 java
襴
油
Java(4/4)
handfoot
油
Java collections framework
蟆曙
油
願 覦 Chap.11 蠍磯蓋 API 企(java)(KOR)
MIN SEOK KOO
油
Ai C#碁碁
Astin Choi
油
2014.07.26 KSUG 讌れ 蟷 貉 碁碁 - ′ メ罪メ =8 =戟=求 ()
JiandSon
油
Programming java day2
Jaehoonyam
油
Feel functional
WonJun Lee
油
5= ≡梶≡
SeoYeong
油
Effective java
Haeil Yi
油
Introduction to Fork Join Framework_SYS4U I&C
sys4u
油
Kth螳覦 碁碁 1
Byeongsu Kang
油
2023.05.01 = = : 覦 蠍一
HONG YONG JUN
油
Ad
More from Hyosang Hong
(20)
PDF
珂皆粥喝蠍一襭.沿糸韓
Hyosang Hong
油
PDF
Java 覲襭
Hyosang Hong
油
PDF
Java 一一
Hyosang Hong
油
PDF
Java lambda
Hyosang Hong
油
PDF
Java inner class
Hyosang Hong
油
PDF
Java generic
Hyosang Hong
油
PDF
Java 蠍一
Hyosang Hong
油
PDF
Java extends
Hyosang Hong
油
PDF
Java
Hyosang Hong
油
PDF
Java collection
Hyosang Hong
油
PDF
Java class
Hyosang Hong
油
PDF
Spring 蟲 襭
Hyosang Hong
油
PDF
Map struct
Hyosang Hong
油
PDF
Kafka 襭 v0.1
Hyosang Hong
油
PDF
Jpa 貎朱Μ 襭
Hyosang Hong
油
PDF
Java 危危蠍 貊 20210405
Hyosang Hong
油
PDF
Java 讌覲伎 螳ロ 螳覦 豺
Hyosang Hong
油
PDF
Enum
Hyosang Hong
油
PDF
Spring 蟲 襭
Hyosang Hong
油
PDF
Map struct
Hyosang Hong
油
珂皆粥喝蠍一襭.沿糸韓
Hyosang Hong
油
Java 覲襭
Hyosang Hong
油
Java 一一
Hyosang Hong
油
Java lambda
Hyosang Hong
油
Java inner class
Hyosang Hong
油
Java generic
Hyosang Hong
油
Java 蠍一
Hyosang Hong
油
Java extends
Hyosang Hong
油
Java
Hyosang Hong
油
Java collection
Hyosang Hong
油
Java class
Hyosang Hong
油
Spring 蟲 襭
Hyosang Hong
油
Map struct
Hyosang Hong
油
Kafka 襭 v0.1
Hyosang Hong
油
Jpa 貎朱Μ 襭
Hyosang Hong
油
Java 危危蠍 貊 20210405
Hyosang Hong
油
Java 讌覲伎 螳ロ 螳覦 豺
Hyosang Hong
油
Enum
Hyosang Hong
油
Spring 蟲 襭
Hyosang Hong
油
Map struct
Hyosang Hong
油
Ad
Java stream v0.1
1.
JAVA : https://github.com/hyomee/JAVABASIC
2.
1. Stream 蠍磯蓋 -
一一 蟲豌伎 襷♀鍵覃, 螳れ 覓苦 豌襴螻 讌 旧 豢企, ( 讀, 蠏 螻 蠍磯レ る 蠏 蟲螻 豺伎危碁ゼ 螻 螻 蟆郁骸襯 豺蠍 れ る襯 一一 覲 殊 ろ碁 殊企襴 襷♀鹸. ) - 覦一願骸 貉 朱 豌襴 . ( 讀, 覦一 貉 語ろ伎れ 螳襯 譟壱伎 蟆郁骸襯 譟壱伎 蟆郁骸襯 磯螻 螳螻給 蟆郁骸襯 詞 . ) - 覲豌襴螳 螳ロ. ( 讀, 磯襯 伎 襷 れ 觜襯願 豌襴 . ) - Stream 企至螳 覓伎 企. - Stream れ 覲願 讌 . ( れ 覿 Collection 覲願 蟇磯 ) - Stream 一一 覲語 覲蟆 讌 . ( 蟆郁骸 襦 ろ碁殊朱 覦 ) - Stream 一一 螳ロ覃 讌(Lazy)豌襴 . - Stream : Stream instance - Stream 螳螻 : 豐蠍 Stream るジ Stream朱 覲 譴螳 一 (Intermediate operations) :: Filtering, Mapping -> 伎 螻襦 讌 - Stream 蟆郁骸 : 豕譬 一(terminal operations) : 一一 讌一一磯れ ろ 螳 , 危襦 企 Stream 豌 襷ろ 磯 n 蟆郁骸 襷り鍵 蟆郁骸 - for, foreach覓語 襯 蟶朱伎 豌襴. - 覓(襦讌) 覲旧 覃 襦讌 願 貊 襷 - 譴豌 for覓 朱 企る List<String> words = new ArrayList<>(); words.add("java"); words.add("javascript"); words.add("python"); words.add("c#"); int count = 0; for ( String s : words) { if ( s.length() > 4) count++; } System.out.println("count :: " + count); long streamCnt = words.stream().filter(s->s.length()>4).count(); System.out.println("streamCnt :: " + streamCnt); 蟆郁骸 count :: 2 streamCnt :: 2
3.
2. Stream -
Array : Arrays.stream System.out.println("===== Stream 覲 ======="); String[] strings = new String[]{"c#", "java", "java script"}; Stream<String> stringStream = Arrays.stream(strings); stringStream.forEach(s -> System.out.println(s)); System.out.println("===== 覦一伎 谿剰鍵 ======="); Stream<String> stringStreamOfElement = Arrays.stream(strings, 1,3) ; stringStreamOfElement.forEach(s -> System.out.println(s)); ===== Stream 覲 ======= c# java java script ===== 覦一伎 谿剰鍵 java java script - Collection, List, Set : stream - 覲 豌襴 : parallelStream List<String> stringList = new ArrayList<>(); stringList.add("c"); stringList.add("java"); stringList.add("java script"); stringList.add("c++"); stringList.add("c#"); // Stream 覲 System.out.println("===== Stream 覲 ======= :: " ); Stream<String> stringStream = stringList.stream(); stringStream.forEach(s -> System.out.println(s)); System.out.println("===== parallelStream 覲 ======="); Stream<String> stringParallelStream = stringList.parallelStream(); stringParallelStream.forEach(s -> System.out.println(s)); System.out.println("==================================================="); System.out.println("*. Stream.of襯 伎 Stream "); Stream<String> streamof = Stream.of("java", "c#", "c++"); streamof.forEach(o->System.out.println(o.getClass() + "::" + o)); class java.lang.String::java class java.lang.String::c# class java.lang.String::c++ ===== Stream 覲 ======= :: c java java script c++ c# ===== parallelStream 覲 ======= java script c# c++ c java Stream<String> stream = Stream.empty(); System.out.println("stream :: " + stream.count()); System.out.println("Stream.<String>empty() 螳"); stream :: 0 Stream.<String>empty() 螳
4.
2. Stream =====
Stream 覲 ======= c# java java script ===== 覦一伎 谿剰鍵 java java script System.out.println("==================================================="); System.out.println("2. builer襯 伎 螳豌 ( Object ) "); Stream<Object> objectStream = Stream.builder() .add("java") .add("c#") .add("java scaipt") .build(); objectStream.forEach(o->System.out.println(o.getClass() + "::" + o)); System.out.println("==================================================="); System.out.println("2. builer襯 伎 螳豌 ( String ) "); Stream<String> stringStream = Stream.<String>builder() .add("java") .add("c#") .add("java scaipt") .build(); stringStream.forEach(o->System.out.println(o.getClass() + "::" + o)); - 譯殊 伎襯 伎狩 Stream<String> streamGenerate = Stream.generate(()->"Echo").limit(5); streamGenerate.forEach(o->System.out.println(o.getClass() + "::" + o)); // (random number) Stream<Double> streamGenerateRandoms = Stream.generate(Math::random).limit(5); streamGenerateRandoms.forEach(o->System.out.println(o.getClass() + "::" + o)); class java.lang.String::Echo class java.lang.String::Echo class java.lang.String::Echo class java.lang.String::Echo class java.lang.String::Echo class java.lang.Double::0.4853244219582693 class java.lang.Double::0.8893768469236104 class java.lang.Double::0.6801395514026836 class java.lang.Double::0.40567815077776515 class java.lang.Double::0.23895785683876747
5.
3. 蠍磯蓋
Stream - IntStream : short, char, byte, Boolean - longStream : long - doubleStream: float - IntStream る IntStream.of, Arrays,stream 覃 - IntStream.builder().build() - Arrays.stream(values. from, to ) - generate, iterate - IntStream, longStream : 蠍郁 1 覯襯 燕 range, rangeClosed IntStream zeroToNinetyNine = IntStream.range(0,100); // 100 IntStream zeroToHundred = IntStream.rangeClosed(0,100); // 100 class java.lang.Integer::50 class java.lang.Integer::55 class java.lang.Integer::60 class java.lang.Integer::65 class java.lang.Integer::70 IntStream intStream = IntStream.builder() .add(2) .add(34) .add(40) .build(); intStream.forEach(i -> System.out.println(i)); System.out.println("===================="); intStream = IntStream.of(30, 40, 50); intStream.forEach(i -> System.out.println(i)); System.out.println("===================="); int[] intArrays = new int[]{20,30,40}; intStream = Arrays.stream(intArrays, 1,3); intStream.forEach(i -> System.out.println(i)); 2 34 40 ==================== 30 40 50 ==================== 30 40 - 螳豌 Stream 蠍磯蓋 ろ碁殊朱 覲 - 蠍磯蓋 ろ碁殊 螳豌 ろ碁殊朱 覲 : boxed List<String> stringList = new ArrayList<>(); stringList.add("c"); stringList.add("java"); stringList.add("java script"); stringList.add("c++"); stringList.add("c#"); System.out.println("===== Stream 覲 ======= :: " ); Stream<String> stringStream = stringList.stream(); System.out.println("===== IntStream 覲 ======= :: " ); IntStream lenths = stringStream.mapToInt(String::length); lenths.forEach(i -> System.out.println(i)); System.out.println("===== Stream 覲 ======= :: " ); Stream<Integer> integerStream = IntStream.range(0,5).boxed(); integerStream.forEach(i -> System.out.println(i)); ===== Stream 覲 ======= :: ===== IntStream 覲 ======= :: 1 4 11 3 2 ===== Stream 覲 ======= :: 0 1 2 3 4 - toArray 蠍磯蓋 覦一伎 襴 - 旧 蟆郁骸襯 れ朱 覃 OptionalInt, OprionalLong, OptionalDouble 襴 getAsInt, getAsLong, getAsDouble - Optional function get - 蠍磯蓋 Stream 蠏, 豕螳, 豕螳 襴 sum, average, max, min - summaryStatistics覃 ろ碁殊 螻, 蠏, 豕螳, 豕螳 覲願 intSummaryStatistics, LongSummaryStatistics, DoubleSummarySatistics 蟆豌企ゼ れ
6.
4. 覲 Stream -
Collection.parallelStream 誤螻 谿 ろ碁(Sequential Stream) - Stream parallelStream 覃襯 伎 Stream<String> parallelStream = Stream.of(strArrays).parallelStream(); Stream<CustInfo> parallelCustInfoStream = custInfoList.parallelStream(); - 覲 覿 : isParallel - 覲 覈襦 ろ 覃 豕譬 覃(terminal method)螳 ろ 覈 讌 豌襴 譴 譴螳 ろ碁 一一 覲 :: 一磯れ 覓伎(stateless)螻 襦 ろ :: る 覲伎, race condition煙 螻 伎 List<String> stringList = new ArrayList<>(); stringList.add("c"); stringList.add("java"); stringList.add("java script"); stringList.add("c++"); stringList.add("c#"); // Stream 覲 System.out.println("===== Stream 覲 ======= :: " ); Stream<String> stringStream = stringList.stream(); stringStream.forEach(s -> System.out.println(s)); System.out.println("===== parallelStream 覲 ======="); Stream<String> stringParallelStream = stringList.parallelStream(); stringParallelStream.forEach(s -> System.out.println(s)); ===== Stream 覲 ======= :: c java java script c++ c# ===== parallelStream 覲 ======= java script c# c++ c java
7.
5. Interface -
1螳 豢 覃襯 螳讌螻 誤壱伎 :: Single Abstract Method(SAM) - 伎 : 覦 れ 誤壱伎る襷 蠏 螳 蠍 覓 public class FunctionalInterace { interface FunctionalInterface { public abstract void doWork(String text); } public static void main(String[] strings) { // 給 企 FunctionalInterface func01 = new FunctionalInterface() { @Override public void doWork(String text) { System.out.println(text); } }; func01.doWork("給 企 :: 願 "); // FunctionalInterface func = text -> System.out.println(text); func.doWork(" :: 願 "); } } 給 企れ 螻牛旧 - 給企る り 碁 覦蟾 企れ 覃る 覲 覃 蠏 - 讌襷 覃る 覲 覃 襷り覲 蠏狩蠍 伎 企 覲れ final 轟煙 螳讌螻 伎 . 給 企れ 谿伎 - 給企れ れ this 覩碁 るゴ : 給企れ this 給企 螳襴れ襷 れ this 碁 企るゼ 螳襴給. - る 覲(Shadow Variable) 讌 給企れ れ this 覩碁 るゴ : 給 企る 覲襯 誤 讌襷 る 企ゼ 讌 給. - る 誤壱伎れ 覦 覃襷 螳讌螻 伎 ! : 誤壱伎れ @FunctionalInterface 企誤伎 覿企 螳 伎 豢 覃螳 碁 蟆曙 貉危 襯 覦. 誤壱伎 朱誤 襴 る Supplier<T> T T 螳 襴 Consumer<T> T void T 螳 觜 BiConsumer<T, U> T, U void T, U 螳 觜 Predicate<T> T boolean Boolean 螳 襴 ToIntFunction<T> ToLongFunction<T> ToDoubleFunction<T> T Int long double T 螳 語襦 覦螻 Int, long, double 襴 IntFunction<T> LongFunction<T> DoubleFunction<T> Int long double R 覦螻 Int, long, double 語襦 覦螻 R 襴 誤壱伎 朱誤 襴 る Function<T, R> T R T 螳 語襦 覦螻 R 襴 BiFunction<T, U, R> T, U R T, U 語襦 覦螻 R 襴 UnaryOperator<T> T T T 一一 BinaryOperator<T> T, T T T 危 一一
8.
6. 覦 蠍磯蓋
螻 Interface - Runnable : 語襯 覦讌 螻 襴願 誤壱伎 - Supplier : 語襯 覦讌 螻 T 螳豌企ゼ 襴 - Consumer : T 語襯 覦螻 襴願 : andThen 覃 螳 伎 一 Consumer襯 ろ - Function<T, R> : T 語襯 覦螻 R 螳豌企ゼ 襴 - Predicate : T 語襯 覦螻 boolean襯 襴 @FunctionalInterface public interface Runnable { public abstract void run(); } Runnable runnable = () -> System.out.println("Runnable...."); runnable.run(); Runnable.... @FunctionalInterface public interface Supplier<T> { T get(); } Supplier supplier = () -> "Supplier .... "; String str = (String) supplier.get(); System.out.println(str); Supplier .... @FunctionalInterface public interface Consumer<T> { void accept(T t); default Consumer<T> andThen(Consumer<? super T> after) { Objects.requireNonNull(after); return (T t) -> { accept(t); after.accept(t); }; } } Consumer<String> consumer = text -> System.out.println("Consumer...." + text); Consumer<String> consumerandThen = text -> System.out.println("Consumer andThen...." + text); consumer.andThen(consumerandThen().accept("String type"); Consumer....String type Consumer andThen....String type @FunctionalInterface public interface Function<T, R> { R apply(T t); default <V> Function<V, R> compose(Function<? super V, ? extends T> before) { Objects.requireNonNull(before); return (V v) -> apply(before.apply(v)); } default <V> Function<T, V> andThen(Function<? super R, ? extends V> after) { Objects.requireNonNull(after); return (T t) -> after.apply(apply(t)); } static <T> Function<T, T> identity() { return t -> t; } } Function<Integer, Integer> multiply = (value) -> value * 2; Integer result = multiply.apply(5); System.out.println("Function...." + result); Function<Integer, Integer> add = (value) -> value + 2; Function<Integer, Integer> addMultiply = multiply.compose(add); // add multiply result = addMultiply.apply(5); System.out.println("Function....addMultiply :: " + result); Function....10 Function....addMultiply :: 14 // Predicate Predicate..test, .and , .or, negate, isEqual, .not Predicate<Integer> predicate = (num) -> num > 10; System.out.println("Predicate.... :: " + predicate.test(5)); Predicate<Integer> predicate1 = (num) -> num < 20; System.out.println("Predicate.... 10 < num < 20 :: " + predicate.and(predicate1).test(25)); System.out.println("Predicate.... 10 < num or num < 20 :: " + predicate.or(predicate1).test(25)); Predicate.... :: false Predicate.... 10 < num < 20 :: false Predicate.... 10 < num or num < 20 :: true
9.
7. Stream Filter,
Map, FlatMap - Filter : 轟 譟郁唄螻 殊 覈 襯 企 襦 ろ碁殊 襴 - Map : ろ碁殊 item 覲蟆 襦 ろ碁殊 襴 List<String> address = new ArrayList<>(); address.add("語 ″蟲 覦企"); address.add("語 ″蟲 ″"); address.add("語 螳蟲 螳"); address.add("語 螳蟲 豐"); // Filter : Stream 襯 蟆 譟郁唄 襷譟燕 蟆 蟇碁る企 // predicate<T>, 讀 T襯 語襦 覦螻 boolean 襴危 誤壱伎る 螳 Stream<String> addressStream = address.stream(); List<String> songpa = addressStream.filter(s -> s.contains("″蟲")).collect(Collectors.toList()); songpa.stream().forEach(System.out::println); System.out.println("======================================="); // Map : Stream 螳れ 轟 覦朱 覲 螻 苦 // 覲 襯 朱誤磯 覦. List<String> tmp = address.stream().map(s->s.replaceAll("″蟲", "″")).collect(Collectors.toList()); tmp.stream().forEach(s-> System.out.println(s)); System.out.println("======================================="); 語 ″蟲 覦企 語 ″蟲 ″ ======================================= 語 ″ 覦企 語 ″ ″ 語 螳蟲 螳 語 螳蟲 豐 ======================================= - 螳 ろ碁殊 螳 ろ碁殊朱 豎 襦 ろ碁殊 襴 String[][] arrays = new String[][]{ {"a1", "a2"}, {"b1", "b2"}, {"c1", "c2", "c3"} }; Stream<String[]> stream4 = Arrays.stream(arrays); Stream<String> stream5 = stream4.flatMap(s -> Arrays.stream(s)); stream5.forEach(System.out::println); A1 A2 B1 B2 C1 C2 C3
10.
7. Stream Concat,
Distinct, Limit, Skip, Sorted - Item ろ碁殊朱 豺. - 譴覲給 item 覈 蟇 襦 ろ碁殊朱 襴 - equals(), hasCode() 螳 伎 A1 A2 B1 B2 C1 C2 C3 List<Member> memberList = Arrays.asList(new Member("1", "蠍碁"), new Member("1", "蟾蠍語") ); List<Address> addressList = Arrays.asList(new Address("1", "語 ″蟲"), new Address("1", "語 螳蟲") ); Stream<Member> streamMember = memberList.stream(); Stream<Address> streamAdress = addressList.stream(); Stream<T> streamMemberAddress = (Stream<T>) Stream.concat(streamMember, streamAdress); streamMemberAddress.forEach(t->{ if ( t instanceof Address) { Address a = (Address) t; System.out.println("Address : " + a.getMemberNo() + ", Address : " + a.getAddress()); } else if (t instanceof Member) { Member a = (Member) t; System.out.println("MemberNo : " + a.getMemberNo() + ", MemberNm : " + a.getMemberNm()); } }); MemberNo : 1, MemberNm : 蠍碁 MemberNo : 1, MemberNm : 蟾蠍語 Address : 1, Address : 語 ″蟲 Address : 1, Address : 語 螳蟲 List<String> asList = Arrays.asList("蠍碁", "蟾蠍語", "蠍碁", "", "蟾蠍語"); Stream<String> stream1 = asList.stream().distinct(); stream1.forEach(System.out::println); 蠍碁 蟾蠍語 - limit : 殊 螳 襷 螳 襦 ろ碁 - Skip : 殊 襷 item 蟇企 螻 蠏 危 item朱 ろ碁 - Itemれ 襦 ろ碁殊 - Comparable interface螳 蟲 伎 List<String> langs = Arrays.asList("java", "kotlin", "haskell", "ruby", "smalltalk"); System.out.println("sorted:"); langs.stream().sorted().forEach(System.out::println); System.out.println("reversed:"); langs.stream().sorted(Comparator.reverseOrder()).forEach(System.out::println); langs = Arrays.asList("java", "kotlin", "haskell", "ruby", "smalltalk"); System.out.println("sorted:"); langs.stream().sorted(Comparator.comparing(String::length)) .forEach(System.out::println); System.out.println("reversed:"); langs.stream().sorted(Comparator.comparing(String::length).reversed()).forEach(System.out::println); sorted: haskell java kotlin ruby smalltalk reversed: smalltalk ruby kotlin java haskell sorted: java ruby kotlin haskell Smalltalk reversed: smalltalk haskell kotlin java ruby
11.
8. Stream find,
match, Collecting - findfirst : 螳 豌覯讌 蟆 襴 - findAny : 蟯螻 襾殊 谿城 螳豌企ゼ 襴 List<String> elements = Arrays.asList("a", "a1", "b", "b1", "c", "c1"); Optional<String> firstElement = elements.stream() .filter(s -> s.startsWith("b")).findFirst(); Optional<String> anyElement = elements.stream() .filter(s -> s.startsWith("b")).findAny(); firstElement.ifPresent(System.out::println); anyElement.ifPresent(System.out::println); b b - ろ碁殊 谿剰 螳豌願 譟伎 讌襯 boolean 朱 襴 - anyMatch : 譟郁唄 襷 螳豌願 朱 朱 true - allMatch : 覈 螳豌願 譟郁唄 襷 true - noneMatch : 譟郁唄 襷 螳豌願 伎 true List<String> elementList = Arrays.asList("a", "a1", "b", "b1", "c", "c1"); boolean anyMatch = elements.stream().anyMatch(s -> s.startsWith("b")); System.out.println("anyMatch: " + (anyMatch ? "true" : "false")); boolean allMatch = elements.stream().allMatch(s -> s.startsWith("b")); System.out.println("allMatch: " + (allMatch ? "true" : "false")); boolean noneMatch = elements.stream().noneMatch(s -> s.startsWith("b")); System.out.println("noneMatch: " + (noneMatch ? "true" : "false")); anyMatch: true allMatch: false noneMatch: false - Collectors.toList() : 蟆郁骸襯 襴ろ碁 覦 - Collectors.joining() : 蟆郁骸襯 ろ碁朱 覲 : delimiter : 螳 譴螳 れ願 襯 蟲覿 貅譯朱 蟲覿 prefix : 蟆郁骸 襷 覿 覓語 suffix : 蟆郁骸 襷 れ 覿 覓語 - Collectors.averageingInt() : 螳(Integer value ) 蠏(arithmetic mean) - Collectors.summingInt() : 螳 (sum) - Collectors.summarizingInt() : 螻 蠏 - Collectors.groupingBy() : 轟 譟郁唄朱 れ 蠏碁9 -> 誤壱伎 Function 伎伎 轟 螳 蠍一朱 ろ碁 れ 覓苦 - Collectors.partitioningBy() : 誤壱伎 Predicate 襯 覦給. Predicate 語襯 覦 boolean 螳 襴 - Collectors.collectingAndThen() : 轟 朱 蟆郁骸襯 collect 危 豢螳 蟆曙一
12.
8. Stream find,
match public class CollectionMain { public static void main(String[] arg) { List<ProductInfo> productList = Arrays.asList(new ProductInfo(1, "蠍1", 10000, "P"), new ProductInfo(2, "覿螳1", 1000, "R"), new ProductInfo(3, "蠍2", 20000, "P"), new ProductInfo(4, "覿螳2", 2000, "R"), new ProductInfo(5, "旧1", 3000, "O")); List<String> productNmList = productList.stream().map(ProductInfo::getProductNm).collect(Collectors.toList()); productNmList.forEach(System.out::println); String productNmStr = productList.stream().map(ProductInfo::getProductNm).collect(Collectors.joining()); System.out.println( "productNmStr ::" + productNmStr); productNmStr = productList.stream().map(ProductInfo::getProductNm).collect(Collectors.joining(",","[","]")); System.out.println( "productNmStr ::" + productNmStr); Double priceAvarag = productList.stream().filter(productInfo -> productInfo.getProductType().equals("P")).collect(Collectors.averagingInt(ProductInfo::getPrice)); System.out.println( "priceAvarag ::" + priceAvarag); Double allPriceAvarag = productList.stream().collect(Collectors.averagingInt(ProductInfo::getPrice)); System.out.println( "allPriceAvarag ::" + allPriceAvarag); int sumP = productList.stream().filter(productInfo -> productInfo.getProductType().equals("P")).collect(Collectors.summingInt(ProductInfo::getPrice)); System.out.println( "sumP ::" + sumP); int sum = productList.stream().collect(Collectors.summingInt(ProductInfo::getPrice)); System.out.println( "sum ::" + sum); IntSummaryStatistics sumavgP = productList.stream().filter(productInfo -> productInfo.getProductType().equals("P")).collect(Collectors.summarizingInt(ProductInfo::getPrice)); System.out.println( "sumavgP ::" + sumavgP); IntSummaryStatistics sumavg = productList.stream().collect(Collectors.summarizingInt(ProductInfo::getPrice)); System.out.println( "sumavg ::" + sumavg); HashMap groupByProduct = (HashMap) productList.stream().collect(Collectors.groupingBy(ProductInfo::getProductType)); groupByProduct.forEach((k,v) -> { System.out.println( "key ::" + k); List<ProductInfo> values = (List<ProductInfo>) v; values.forEach(productInfo -> System.out.println("Values:: " + productInfo.getProductNm())); }); } } 蠍1 覿螳1 蠍2 覿螳2 旧1 productNmStr ::[蠍1,覿螳1,蠍2,覿螳2,旧1] productNmStr ::蠍1覿螳1蠍2覿螳2旧1 priceAvarag ::15000.0 allPriceAvarag ::7200.0 sumP ::30000 sumavgP ::IntSummaryStatistics{count=2, sum=30000, min=10000, average=15000.000000, max=20000} sumavg ::IntSummaryStatistics{count=5, sum=36000, min=1000, average=7200.000000, max=20000} key ::P Values:: 蠍1 Values:: 蠍2 key ::R Values:: 覿螳1 Values:: 覿螳2 key ::O Values:: 旧1
13.
9. Optional - Null豌襴襯
壱蟆 螻 螳豌企 null 螳豌企ゼ 覈 螳豌企ゼ wrapping 螳豌 - Optional<T> 企るゼ 伎伎 NullPointerException 覦讌 . Optional<T> 企る 襷襦 null 螳 螳碁 企る 谿語^朱 null 殊企讌 襦 伎朱 企 - isPresent : 企 螳豌願 null 語 譴 - orElse : Optional null 蟆曙 orElse() param 襴 - orElseGet : Optional null 蟆曙 企 襯 ろ螻 蠏 ろ蟆郁骸襯 - orElseThrow : null 蟆曙 碁ゼ 讌螻 苦 b b Optional optional = Optional.empty(); System.out.println( "optional :: " + optional); System.out.println( "optional.isEmpty ::" + optional.isEmpty()); System.out.println( "optional.isPresent ::" + optional.isPresent()); TextClass textClass = new TextClass(); Optional<String> op = Optional.ofNullable(textClass.getTest()); String result = op.orElse("Other"); System.out.println( "optional result ::" + result); textClass.setTest("Testing...."); op = Optional.ofNullable(textClass.getTest()); result = op.orElse("Other"); System.out.println( "optional set result ::" + result); MemberAddress memberAddress = new MemberAddress(); Optional<Member> member = Optional.ofNullable(memberAddress.getMember()); Optional<String> memberNo = member.map(Member::getMemberNo); result = memberNo.orElse("覯 "); System.out.println( "optional member ::" + result); result = memberNo.orElseGet(()-> new String()); System.out.println( "optional null String :: " + result); result = memberNo.orElseThrow(CustomException::new); optional :: Optional.empty optional.isEmpty ::true optional.isPresent ::false optional result ::Other optional set result ::Testing.... optional member ::覯 optional null String :: ...... Member mm = memberAddress.getMember(); if ( mm != null) { String mmNo = mm.getMemberNo(); if ( mmno != null) { return result; } } return "覯 "; ============================================================ Optional<Member> member = Optional.ofNullable(memberAddress.getMember()); Optional<String> memberNo = member.map(Member::getMemberNo) return memberNo.orElse("覯 ");
14.
www.iabacus.co.kr Tel. 82-2-2109-5400 Fax. 82-2-6442-5409 THANKS
Download