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

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

如何在沒有 POJO 類方法的 java 流中使用 Collectors.groupingBy

如何在沒有 POJO 類方法的 java 流中使用 Collectors.groupingBy

素胚勾勒不出你 2022-06-08 17:24:05
我正在讀取單個 csv 文件(大小約為 700 MB,有 103415834 行)并嘗試檢索具有某些特定值的所有行。如果它只有 1 個條目,我可以檢索該行,但如果它有超過 1 個條目則不能。下面是我的代碼,它適用于 1 個條目。    try (Stream<String> stream = Files.lines(Paths.get(IN_FILE_PATH))) {        int nameIndex = columns.indexOf("Rate");        Stream<String> stream1 = Files.lines(Paths.get(IN_FILE_PATH));        List<List<String>> values = stream1                .skip(1)                .map((line) -> Arrays.asList(line.split(",")))                .filter(list -> list.get(nameIndex).equals("25"))                .collect(Collectors.toList());        System.out.println(values.size());        values.forEach((l) -> System.out.println(l));    } catch (IOException e1) {        e1.printStackTrace();    }嘗試解析的 csv 文件的示例行如下:MD,URN,PremiseType,Rate,OHP 09022,null,Residential,14,null 38329,1428275,Residential,14,null 38742,563459,Single,21,111
查看完整描述

1 回答

?
牧羊人nacy

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

這是按Rate(arr[3]) 分組,但您可以按所需的任何字段分組:


Map<String, List<String>> map = Files.lines(Paths.get(IN_FILE_PATH))

            .skip(1)

            .map(line -> line.split(","))

            .collect(groupingBy(arr -> arr[3], 

                     mapping(strings -> String.join(" ", strings), toList())));

結果中的鍵map是您分組的字段(在本例中為速率),值(List<String>)是具有相同速率的行列表。


希望這有幫助


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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