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

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

如何遍歷嵌套的 Map<Integer, List<abc>>

如何遍歷嵌套的 Map<Integer, List<abc>>

小唯快跑啊 2023-03-31 16:55:16
如何遍歷嵌套Map<Integer, List<abc>>Class Abc {    int id ;    String name;    Date startDate;    int rowNum;}List<Abc> dupList = list                    .stream()                    .collect(Collectors.groupingBy(Abc::getRowNum))                    .values()                    .stream()                    .filter(v-> v.size()>=2)                    .flatMap(List::stream)                    .collect(Collectors.toList());Map<Integer, List<Abc>> byRows = dupList                                 .stream()                              .collect(Collectors.groupingBy(Abc::getRowNum));Map contains fallowing dataKey             value(abc List)rowNum: 1       rowNum: 1                startDate: 01/01/2019                endDate:12/31/2099                name: Test1                Id:101rowNum: 1       rowNum: 1                startDate: 01/01/2020                endDate:12/31/2099                name: Test1                Id:111rowNum: 3       rowNum: 3                startDate: 01/01/2020                endDate:12/31/2099                name: Test4                Id:342rowNum: 3       rowNum: 3                startDate: 01/01/2020                endDate:12/31/2099                name: Test4                Id:348現在我想打印鍵的值和相應的 Abc 類列表。當我嘗試打印地圖時Map<Integer, List<Abc>> collect = byRows                                   .entrySet()                                   .stream()                                  .collect(Collectors.toMap(Map.Entry::getKey,                                                         Map.Entry::getValue));System.out.println(collect);我正在獲取輸出,因為{1=[Abc@1d72673f, Abc@1cffb7e0], 3=[Abc@522530e9, Abc@58dc69f2]} 我沒有從 Abc 類的 ArrayList 的嵌套循環中獲取實際值。預期輸出:I want to print startDate for each all rows Ex: rowNum  startDate     1       01/01/2019 {startDate}            01/01/2020    3       startDate: 01/01/2020            startDate: 01/01/2020
查看完整描述

2 回答

?
守著星空守著你

TA貢獻1799條經驗 獲得超8個贊

您需要覆蓋 Abc 的 toString() 方法。當您調用“System.out.println”時,它將調用 toString() 方法并返回結果。



查看完整回答
反對 回復 2023-03-31
?
慕村225694

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

基本上,如果列表有 2 個元素,你就是在分組rowNum和過濾。所以你可以一步完成這一切。無需兩次分組


Map<Integer, List<Term>> collect = list

                .stream()

                .collect(Collectors.groupingBy(Abc::getRowNum))

                .entrySet()

                .stream()

                .filter(v-> v.getValue().size()>=2)

                .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));

然后如果你想打印每個元素然后Map使用forEach,你仍然可能需要根據你的要求格式化數據


collect.forEach((k,v)-> {

             System.out.println("RowNum is :"+k);

             v.forEach(o->System.out.println(o.getStartDate()));

           });


查看完整回答
反對 回復 2023-03-31
  • 2 回答
  • 0 關注
  • 154 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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