亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

用于計算唯一對象的 Java lambda 表達式

用于計算唯一對象的 Java lambda 表達式

慕尼黑5688855 2022-06-04 15:34:51
我已經在下面設置了這個流,并且不能在 .map 上使用方法 count()。僅在過濾器上。但我沒有設置任何過濾條件。我怎么能在下面這個流的字符串數組上做到這一點?我想根據 replaceAll 中的正則表達式對字符串進行排序,并獲取唯一字符串并獲取唯一字符串的總數。Stream newStream = Arrays.stream(arr)                     .map(s -> s.replaceAll("[^a-z]", ""))                     .distinct()
查看完整描述

3 回答

?
繁花不似錦

TA貢獻1851條經驗 獲得超4個贊

如果要計算distinct字符串的數量,可以這樣做:

long countDistinct = Arrays.stream(arr)
        .map(s -> s.replaceAll("[^a-z]", ""))
        .distinct() // intermediate operation with unique strings as 'Stream' return type
        .count();   // terminal operation with count of such strings as return type


查看完整回答
反對 回復 2022-06-04
?
慕娘9325324

TA貢獻1783條經驗 獲得超4個贊

我不確定我是否完全理解您的要求。List在將正則表達式應用于數組的每個元素之后,您似乎想要對不同的字符串進行排序。這List將同時具有元素及其計數:

List<String> list = Arrays.stream(arr)
    .map(s -> s.replaceAll("[^a-z]", ""))
    .distinct()
    .sorted()
    .collect(Collectors.toList());

現在,list持有元素。如果您還想知道它包含多少元素,只需使用以下List.size方法:

int count = list.size();

編輯:如果您還需要Stream更改字符串、唯一和排序的字符串,只需創建一個新Stream的 from list

Stream<String> newStream = list.stream();


查看完整回答
反對 回復 2022-06-04
?
幕布斯6054654

TA貢獻1876條經驗 獲得超7個贊

以列表形式收集和獲取總數都是終端操作,因此您只能在實時流中執行任一操作。


如果您必須使用相同的流來獲取字符串列表和計數,一個(hacky)選項是使用Supplier<Stream<T>>:


String text = "FOO bar BAZ TEXT text some";

String[] arr = text.split(" ");


Supplier<Stream<String>> sameStream = () -> Arrays.stream(arr)

        .map(s -> s.replaceAll("[^a-z]", ""))

        .distinct()

        .filter(s -> !s.isEmpty())

        .sorted();


System.out.println("Unique strings are: " + sameStream.get().collect(Collectors.toList()));

System.out.println("Count of Unique strings are: " + sameStream.get().count());

上面產生了這個輸出:


Unique strings are: [bar, some, text]

Count of Unique strings are: 3


查看完整回答
反對 回復 2022-06-04
  • 3 回答
  • 0 關注
  • 160 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號