日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java8函数式编程(4)--collector(收集器)

發布時間:2024/4/13 java 65 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java8函数式编程(4)--collector(收集器) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

?

enum Characteristics {/***指示collector是并發的。如果一個并發collector不是unordered,則只能并發應用到非排序數據源。*/CONCURRENT,/***指示collector是unordered.歸約結果不受流中項目的遍歷和累積順序的影響。*/UNORDERED,/*** 這表明finisher 方法返回的函數是一個恒等函數 ,可以被忽略,這種情況下,累加器對象將會直接用作歸約過程的最終結果。這也意味著,將累加器A不加檢查地轉換為結果R是安全的。*Indicates that the finisher function is the identity function and* can be elided. If set, it must be the case that an unchecked cast* from A to R will succeed.*/IDENTITY_FINISH}public final <R> R collect(Supplier<R> supplier,BiConsumer<R, ? super P_OUT> accumulator,BiConsumer<R, R> combiner) {//構造一個reduce,應用evaluate方法。return evaluate(ReduceOps.makeRef(supplier, accumulator, combiner));}public final <R, A> R collect(Collector<? super P_OUT, A, R> collector) {A container;if (isParallel()&& (collector.characteristics().contains(Collector.Characteristics.CONCURRENT))&& (!isOrdered() || collector.characteristics().contains(Collector.Characteristics.UNORDERED))) {container = collector.supplier().get();BiConsumer<A, ? super P_OUT> accumulator = collector.accumulator();forEach(u -> accumulator.accept(container, u));}else {//container = evaluate(ReduceOps.makeRef(collector));}return collector.characteristics().contains(Collector.Characteristics.IDENTITY_FINISH)? (R) container: collector.finisher().apply(container);} private static <I, R> Function<I, R> castingIdentity() {return i -> (R) i;}

toCollection

public static <T, C extends Collection<T>>Collector<T, ?, C> toCollection(Supplier<C> collectionFactory) {return new CollectorImpl<>(collectionFactory //Supplier, Collection<T>::add //集聚器,(r1, r2) -> { r1.addAll(r2); return r1; } //combiner,CH_ID);}

toList--ArrayList

public static <T>Collector<T, ?, List<T>> toList() {return new CollectorImpl<>((Supplier<List<T>>) ArrayList::new, List::add, (left, right) -> { left.addAll(right); return left; }, CH_ID);}

toSet--HashSet

public static <T> Collector<T, ?, Set<T>> toSet() {return new CollectorImpl<>((Supplier<Set<T>>) HashSet::new, Set::add,(left, right) -> { left.addAll(right); return left; },CH_UNORDERED_ID);}

joining

//使用StringBuilderpublic static Collector<CharSequence, ?, String> joining() {return new CollectorImpl<CharSequence, StringBuilder, String>(StringBuilder::new, StringBuilder::append,(r1, r2) -> { r1.append(r2); return r1; },StringBuilder::toString, CH_NOID);}public static Collector<CharSequence, ?, String> joining(CharSequence delimiter) {return joining(delimiter, "", "");} //使用StringJoinerpublic static Collector<CharSequence, ?, String> joining(CharSequence delimiter,CharSequence prefix,CharSequence suffix) {return new CollectorImpl<>(() -> new StringJoiner(delimiter, prefix, suffix),StringJoiner::add, StringJoiner::merge,StringJoiner::toString, CH_NOID);}

reducing

public static <T> Collector<T, ?, Optional<T>> reducing(BinaryOperator<T> op) {class OptionalBox implements Consumer<T> {T value = null;boolean present = false;@Overridepublic void accept(T t) {if (present) {value = op.apply(value, t);}else {value = t;present = true;}}}return new CollectorImpl<T, OptionalBox, Optional<T>>(OptionalBox::new, OptionalBox::accept,(a, b) -> { if (b.present) a.accept(b.value); return a; },a -> Optional.ofNullable(a.value), CH_NOID);}/*identity,初始值mapper,應用都每個元素的functionop,應用到mapper的返回值。*/public static <T, U> Collector<T, ?, U> reducing(U identity,Function<? super T, ? extends U> mapper,BinaryOperator<U> op) {return new CollectorImpl<>(boxSupplier(identity), //Supplier //accumulator,(a, t) -> { a[0] = op.apply(a[0], mapper.apply(t)); }, //combiner(a, b) -> { a[0] = op.apply(a[0], b[0]); return a; },a -> a[0] //finisher。, CH_NOID);}private static <T> Supplier<T[]> boxSupplier(T identity) {return () -> (T[]) new Object[] { identity };}

counting

public static <T> Collector<T, ?, Long>counting() {return reducing(0L, e -> 1L, Long::sum);}

minBy

public static <T> Collector<T, ?, Optional<T>>minBy(Comparator<? super T> comparator) {return reducing(BinaryOperator.minBy(comparator));}

maxBy

public static <T> Collector<T, ?, Optional<T>>maxBy(Comparator<? super T> comparator) {return reducing(BinaryOperator.maxBy(comparator));}

?

?

?

?

?

?

總結

以上是生活随笔為你收集整理的Java8函数式编程(4)--collector(收集器)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 51嘿嘿嘿国产精品伦理 | 成人国产精品入口免费视频 | 18男女无套免费视频 | 久久久久看片 | 国产三级高清 | 黄色片a| 日本黄色网页 | 在线观看av不卡 | 亚洲av综合av一区二区三区 | 美女被草出白浆 | 少妇激情一区二区三区 | 国产精品主播一区二区 | 欧美成人资源 | 69色| 奇米99| 久久国产乱子 | 日韩精品第二页 | 亚洲精品资源在线 | 中国久久 | 国产一区免费观看 | 草草影院网址 | 他趴在我两腿中间添得好爽在线看 | 天天爽影院 | 老熟妇仑乱一区二区av | 欧美黄页网站 | 疯狂少妇 | 国产一区欧美二区 | a√天堂资源| 国产理论在线观看 | 开心激情深爱 | av一区二区免费 | 久久久久久久黄色片 | 极品少妇一区二区三区 | 欧美日本亚洲韩国国产 | 韩国三级hd中文字幕有哪些 | 俄罗斯精品一区二区三区 | 国产网红在线观看 | 青青草成人免费在线视频 | 免费网站在线观看黄色 | 99免费精品视频 | 国产一区亚洲一区 | 综合天天色| 中文在线a天堂 | 人人干在线视频 | 国产男女猛烈无遮挡 | 精品一区在线看 | 欧美一级全黄 | 亚洲国产成人va在线观看天堂 | 日本人妻伦在线中文字幕 | 一级免费毛片 | 欧美日本在线观看 | 欧美日韩成人在线播放 | 青青成人网 | 免费又黄又爽又色的视频 | 69亚洲| 亚洲春色另类 | 亚洲成人黄色 | 乡村乱淫 | 国产91精品看黄网站在线观看 | 日韩一区在线观看视频 | 伊人开心网 | 亚洲精选久久久 | 国产成人精品一区二区三区在线 | 9191久久 | 强行挺进白丝老师里呻吟 | 在线观看污| 深田咏美av在线 | 日韩黄色片在线观看 | 爱情岛亚洲论坛入口 | 欧美在线视频一区二区三区 | 欧美亚洲黄色 | 亚洲国产成| 四虎综合 | 伊人网视频在线观看 | 另类小说色综合 | 超碰999| 伊人久久免费 | 黑人干亚洲人 | 国产美女永久免费无遮挡 | 男人添女人荫蒂国产 | 高清国产一区二区三区四区五区 | 一级片免费在线播放 | 91九色在线播放 | 老熟妇一区二区三区 | 最近中文字幕在线观看 | 打开免费观看视频在线 | 日韩在线网址 | 成人黄色激情小说 | 高清av一区二区 | 亚洲欧美第一 | 色涩综合 | 国产色在线 | 国产精品成人一区二区 | 国产福利片一区二区 | 亚洲精品在线电影 | 欧美一级做a爰片久久高潮 久热国产精品视频 | 香蕉视频在线网站 | 性xxxx狂欢老少配o | 亚洲av鲁丝一区二区三区 |