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

歡迎訪問 生活随笔!

生活随笔

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

java

Effective Java~46. 优先选择Stream 中无副作用的函数

發布時間:2024/7/23 java 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Effective Java~46. 优先选择Stream 中无副作用的函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

純函數(pure function)的結果僅取決于其輸入:它不依賴于任何可變狀態,也不更新任何狀態。

壞味道

// Uses the streams API but not the paradigm--Don't do this! Map<String, Long> freq = new HashMap<>(); try (Stream<String> words = new Scanner(file).tokens()) {words.forEach(word -> {freq.merge(word.toLowerCase(), 1L, Long::sum);}); }

forEach 操作應僅用于報告流計算的結果,而不是用于執行計算

// Proper use of streams to initialize a frequency table Map<String, Long> freq; try (Stream<String> words = new Scanner(file).tokens()) {freq = words.collect(groupingBy(String::toLowerCase, counting())); }

Collectors有三個這樣的收集器: toList() 、toSet() 和toCollection(collectionFactory) 。它們分別返回集合、列表和程序員指定的集合類型

// Pipeline to get a top-ten list of words from a frequency table List<String> topTen = freq.keySet().stream().sorted(comparing(freq::get).reversed()).limit(10).collect(toList());

????????toMap(keyMapper、valueMapper)最簡單的映射收集器?,它接受兩個函數,一個將流元素映射到鍵,另一個映射到值

// Using a toMap collector to make a map from string to enum private static final Map<String, Operation> stringToEnum =Stream.of(values()).collect(toMap(Object::toString, e -> e));

????????如果流中的每個元素都映射到唯一鍵,則這種簡單的 toMap 形式是完美的。 如果多個流元素映射到同一個鍵,則管道將以 IllegalStateException 終止。

????????toMap 的三個參數形式對于從鍵到與該鍵關聯的選定元素的映射也很有用。例如,假設我們有一系列不同藝術家(artists)的唱片集(albums),我們想要一張從唱片藝術家到最暢銷專輯的 map。這個收集器將完成這項工作。

public class Apple implements Serializable {/*** 顏色.*/private String color;/*** 總量.*/private Integer weight;//get/set... } final Map<String, Apple> singleMap = list.stream().collect(Collectors.toMap(Apple::getColor, it -> it, BinaryOperator.maxBy(Comparator.comparing(Apple::getWeight))));

????????請注意,比較器使用靜態工廠方法 maxBy ,它是從 BinaryOperator 靜態導入的。 此方法將 Comparator<T>轉換為 BinaryOperator<T> ,用于計算指定比較器隱含的最大值。

????????toMap 的三個參數形式的另一個用途是產生一個收集器,當發生沖突時強制執行 last-write-wins 策略。 對于許多流,結果是不確定的,但如果映射函數可能與鍵關聯的所有值都相同,或者它們都是可接受的,則此收集器的行為可能正是您想要的:

// Collector to impose last-write-wins policy final Map<String, Apple> singleMap = list.stream().collect(Collectors.toMap(Apple::getColor, it -> it, (oldVal, newVal) -> newVal));

????????toMap 的第三個也是最后一個版本采用第四個參數,它是一個 map 工廠,用于指定特定的 map 實現,例如EnumMap 或 TreeMap 。

????????groupingBy 方法,該方法返回收集器以生成基于分類器函數(classifier function) 將元素分組到類別中的 map。 分類器函數接受一個元素并返回它所屬的類別。 此類別來用作元素的 map 的鍵。

Map<String, Long> freq = words.collect(groupingBy(String::toLowerCase, counting()));

????????join ,它僅對 CharSequence 實例(如字符串)的流進行操作。 在其無參數形式中,它返回一個簡單地連接元素的收集器。?

List<String> items =Arrays.asList("apple", "apple", "banana"); final String str = items.stream().collect(Collectors.joining(",", "[", "]"));//[apple,apple,banana]

總結

以上是生活随笔為你收集整理的Effective Java~46. 优先选择Stream 中无副作用的函数的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 欧美激情在线看 | 韩日a级片 | 国产三级一区二区三区 | 天天射天天射天天射 | 久久久无码人妻精品无码 | 篠田优在线观看 | av 日韩 人妻 黑人 综合 无码 | 成人性生生活性生交3 | 西川结衣在线观看 | 人人干超碰| 一本一道久久a久久 | 羽月希奶水一区二区三区 | 亚洲乱码日产精品bd在线观看 | 在线欧美a| 久久一级大片 | 日出白浆视频 | 无码人妻aⅴ一区二区三区有奶水 | 人人艹视频 | 国产又粗又猛又爽又黄av | 蜜桃成熟时李丽珍在线观看 | 人妻少妇无码精品视频区 | 国精产品一区一区三区视频 | 在线观看av大片 | 息与子五十路翔田千里 | 国产精品久免费的黄网站 | 国产人人干 | 老熟妇午夜毛片一区二区三区 | v天堂在线观看 | 免费在线毛片 | 中文字幕在线观看三区 | 亚洲综合伊人 | 毛片视频网址 | 青青草华人在线视频 | 91国在线| 美女黄色小视频 | 韩日免费av | 亚洲av无码一区二区二三区 | 成人在线免费视频 | 国产精品15p | 精品亚洲乱码一区二区 | 最新视频 - 8mav | 男人午夜天堂 | 久久成人小视频 | 中文免费在线观看 | 国产一级特黄a高潮片 | 精品国产一区二区在线 | 欧美一级高清片 | 三级黄色生活片 | 少妇无套内谢久久久久 | av在线不卡网站 | 久久99中文字幕 | 国产一级在线播放 | 激情综合啪啪 | 亚洲区色 | 理论片午午伦夜理片影院99 | 内射中出日韩无国产剧情 | 亚洲永久精品一区二区 | 三级亚洲欧美 | 一区二区三区四区不卡 | 亚洲第一成肉网 | 久久亚洲美女 | 欧美一级黄色片 | 亚洲 小说 欧美 激情 另类 | 中文字幕第99页 | 久久精品夜 | 精品人妻人人做人人爽夜夜爽 | 亚洲色图18p | 与子敌伦刺激对白播放的优点 | 无遮挡av| 欧美日韩国产色 | 久久国产精品系列 | 青青导航| 久久美女性网 | 丰满人妻一区二区三区53视频 | 青青视频在线播放 | 特级西西444www大精品视频免费看 | 蜜臀精品 | 国产毛片基地 | www.av日韩| 色伊伊| 欧美成本人视频 | 国产成人精品视频一区二区 | 视频一区二区三区在线观看 | 亚洲最大福利网站 | 精品成人在线视频 | 涩色视频 | 男人的天堂97 | 亚洲7777 | 亚洲电影中文字幕 | 国产乱淫av | 在线一区不卡 | 欧美精品一区二区久久婷婷 | 成人公开视频 | 日韩在线观看一区 | 国产精品午夜在线 | 娇妻高潮浓精白浆xxⅹ | 欧美日韩精品久久久 | 中文字幕第十二页 | 一级做a爰片久久毛片潮喷 天天透天天干 |