91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java8中怎么利用stream自定義分組求和并排序

發布時間:2021-08-06 16:17:53 來源:億速云 閱讀:201 作者:Leah 欄目:編程語言

本篇文章為大家展示了java8中怎么利用stream自定義分組求和并排序,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

具體如下:

public static void main(String[] args) {    List<GroupDetailDTO> list = new ArrayList<>();    GroupDetailDTO dto1 = new GroupDetailDTO();    dto1.setHeadsetId(1);    dto1.setTime("2020-01-03");    dto1.setActConcreteTime("a");    dto1.setPlayed(1);    list.add(dto1);    GroupDetailDTO dto2 = new GroupDetailDTO();    dto2.setHeadsetId(1);    dto2.setTime("2020-01-01");    dto2.setActConcreteTime("b");    dto2.setPlayed(1);    list.add(dto2);    GroupDetailDTO dto3 = new GroupDetailDTO();    dto3.setHeadsetId(1);    dto3.setTime("2020-01-02");    dto3.setActConcreteTime("c");    dto3.setPlayed(1);    list.add(dto3);    GroupDetailDTO dto4 = new GroupDetailDTO();    dto4.setHeadsetId(2);    dto4.setTime("2020-01-01");    dto4.setActConcreteTime("d");    dto4.setPlayed(4);    list.add(dto4);    Map<GroupDetailDTO, Integer> collect = list.stream().collect(Collectors.groupingBy(o -> new GroupDetailDTO(o.getHeadsetId(), o.getTime()), TreeMap::new, Collectors.summingInt(o -> o.getPlayed())));    collect.forEach((k, v) -> {      System.out.println(k + "@@@" + v);    });  }

@Datapublic class GroupDetailDTO implements Comparable<GroupDetailDTO> {  private Integer headsetId;  private String actConcreteTime;  private String time;  private Integer played;  public GroupDetailDTO() {  }  public GroupDetailDTO(Integer headsetId, String time) {    this.headsetId = headsetId;    this.time = time;  }  @Override  public int compareTo(GroupDetailDTO o) {    String a = this.headsetId + "|" + this.getTime();    String b = o.getHeadsetId() + "|" + o.getTime();    return a.compareTo(b);//    return this.getTime().compareTo(o.gtTime());  }}

結果:

上述代碼實現對對象GroupDetailDTO按設備和時間分組求played的和,并且按時間排序了。當初想著既然是按時間排序那么compareTo方法直接使用

return this.getTime().compareTo(o.getTime());

但是結果不正確

分析:分組求和時如果使用了排序,那么分組時對相同屬性的合并將直接根據compareTo返回的結果合并對象,所以如果用上述方法將產生相同的時間直接合并,而不是new GroupDetailDTO(o.getHeadsetId(), o.getTime())里面的兩個屬性都相同才合并。

上述內容就是java8中怎么利用stream自定義分組求和并排序,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宁德市| 扶风县| 四子王旗| 东平县| 新竹市| 黎城县| 杭锦旗| 卢湾区| 来安县| 绥芬河市| 五华县| 江川县| 徐水县| 迁西县| 锦屏县| 宣威市| 肥城市| 楚雄市| 商河县| 台湾省| 深水埗区| 鄂托克前旗| 杭锦后旗| 鹤峰县| 长岭县| 广东省| 麻江县| 武义县| 呼伦贝尔市| 旅游| 呈贡县| 马山县| 沙坪坝区| 庆元县| 托克逊县| 博乐市| 鄂尔多斯市| 新疆| 阿图什市| 镇江市| 余江县|