欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java8 stream自定義分組求和并排序的實(shí)現(xiàn)

 更新時(shí)間:2020年01月24日 08:44:40   作者:shuangyueliao  
這篇文章主要介紹了java8 stream自定義分組求和并排序的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

本文主要介紹了java8 stream自定義分組求和并排序的實(shí)現(xiàn),分享給大家,具體如下:

  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);
    });
  }
@Data
public 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());
  }
}

結(jié)果:

上述代碼實(shí)現(xiàn)對(duì)對(duì)象GroupDetailDTO按設(shè)備和時(shí)間分組求played的和,并且按時(shí)間排序了。當(dāng)初想著既然是按時(shí)間排序那么compareTo方法直接使用

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

但是結(jié)果不正確

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • HashMap線程不安全問(wèn)題解析

    HashMap線程不安全問(wèn)題解析

    這篇文章主要介紹了HashMap線程不安全問(wèn)題解析,HashMap的線程不安全體現(xiàn)在會(huì)造成死循環(huán)、數(shù)據(jù)丟失、數(shù)據(jù)覆蓋等問(wèn)題,其中死循環(huán)和數(shù)據(jù)丟失是在JDK1.7中出現(xiàn)的問(wèn)題,在JDK1.8中已經(jīng)得到解決,但是1.8中仍會(huì)有數(shù)據(jù)覆蓋這樣的問(wèn)題,需要的朋友可以參考下
    2023-11-11
  • Maven 錯(cuò)誤找不到符號(hào)的解決方法

    Maven 錯(cuò)誤找不到符號(hào)的解決方法

    這篇文章主要介紹了Maven 錯(cuò)誤找不到符號(hào)的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • JAVA NIO實(shí)現(xiàn)簡(jiǎn)單聊天室功能

    JAVA NIO實(shí)現(xiàn)簡(jiǎn)單聊天室功能

    這篇文章主要為大家詳細(xì)介紹了JAVA NIO實(shí)現(xiàn)簡(jiǎn)單聊天室功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Java實(shí)現(xiàn)Floyd算法的示例代碼

    Java實(shí)現(xiàn)Floyd算法的示例代碼

    Floyd算法又稱(chēng)為插點(diǎn)法,是一種利用動(dòng)態(tài)規(guī)劃的思想尋找給定的加權(quán)圖中多源點(diǎn)之間最短路徑的算法。本文將用Java語(yǔ)言實(shí)現(xiàn)Floyd算法,需要的可以參考一下
    2022-07-07
  • Java Swing JPasswordField密碼框的實(shí)現(xiàn)示例

    Java Swing JPasswordField密碼框的實(shí)現(xiàn)示例

    這篇文章主要介紹了Java Swing JPasswordField密碼框的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • java顯示當(dāng)前的系統(tǒng)時(shí)間

    java顯示當(dāng)前的系統(tǒng)時(shí)間

    這篇文章主要介紹了java如何顯示當(dāng)前的系統(tǒng)時(shí)間,代碼很簡(jiǎn)單,自己可以自定義顯示的系統(tǒng)時(shí)間的顏色和字體,需要的朋友可以參考下
    2015-10-10
  • Spring實(shí)戰(zhàn)之ResourceLoaderAware加載資源用法示例

    Spring實(shí)戰(zhàn)之ResourceLoaderAware加載資源用法示例

    這篇文章主要介紹了Spring實(shí)戰(zhàn)之ResourceLoaderAware加載資源用法,結(jié)合實(shí)例形式分析了spring使用ResourceLoaderAware加載資源相關(guān)配置與操作技巧,需要的朋友可以參考下
    2020-01-01
  • java+opencv實(shí)現(xiàn)人臉識(shí)別功能

    java+opencv實(shí)現(xiàn)人臉識(shí)別功能

    這篇文章主要介紹了java+opencv實(shí)現(xiàn)人臉識(shí)別功能,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-05-05
  • 基于Java實(shí)現(xiàn)簡(jiǎn)易的局域網(wǎng)對(duì)話系統(tǒng)

    基于Java實(shí)現(xiàn)簡(jiǎn)易的局域網(wǎng)對(duì)話系統(tǒng)

    這篇文章主要介紹了基于Java實(shí)現(xiàn)的簡(jiǎn)易的局域網(wǎng)對(duì)話系統(tǒng),文中的示例代碼對(duì)我們學(xué)習(xí)Java有一定的幫助,感興趣的小伙伴快來(lái)跟隨小編一起學(xué)習(xí)一下吧
    2021-12-12
  • SpringBoot線上環(huán)境徹底關(guān)閉Swagger-UI的方式

    SpringBoot線上環(huán)境徹底關(guān)閉Swagger-UI的方式

    這篇文章主要給大家介紹了SpringBoot線上環(huán)境徹底關(guān)閉Swagger-UI的方式,文中給出了詳細(xì)的代碼示例供大家參考,對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-12-12

最新評(píng)論