国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

集合list排序,普通排序,stream(單屬性、多屬性)排序

這篇具有很好參考價值的文章主要介紹了集合list排序,普通排序,stream(單屬性、多屬性)排序。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1、list<基本類型>


基礎(chǔ)數(shù)據(jù)
List<Integer> list = Arrays.asList(1, 5, 6, 2, 4, 80, 43, 7);

1.1 Collections.sort排序


Collections.sort(list);
System.out.println("Collections.sort正序----->"+list);
Collections.reverse(list);
System.out.println("Collections.reverse倒序-->"+list);

結(jié)果:
Collections.sort正序----->[1, 2, 4, 5, 6, 7, 43, 80]
Collections.reverse倒序-->[80, 43, 7, 6, 5, 4, 2, 1]

1.2 list.sort排序


list.sort(Integer::compareTo);
System.out.println("list.sort正序-->"+list);
list.sort(Comparator.reverseOrder());
System.out.println("list.sort倒序-->"+list);

結(jié)果:
list.sort正序-->[1, 2, 4, 5, 6, 7, 43, 80]
list.sort倒序-->[80, 43, 7, 6, 5, 4, 2, 1]

1.3 list.stream()排序


List<Integer> collect = list.stream().sorted().collect(Collectors.toList());
System.out.println("stream.sorted正序-->" + collect);
List<Integer> collect1 = list.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());
System.out.println("stream.sorted倒序-->" + collect1);

結(jié)果:
stream.sorted正序-->[1, 2, 4, 5, 6, 7, 43, 80]
stream.sorted倒序-->[80, 43, 7, 6, 5, 4, 2, 1]

2、list<對象>

  • List<類> list = new ArrayList<>();


基礎(chǔ)數(shù)據(jù)
List<PersonDto> personDtos = ListUtil.toList(
        new PersonDto(1, "張三", 174, 32),
? ? ? ? new PersonDto(4, "李四", 173, 23),
? ? ? ? new PersonDto(4, "趙六", 185, 20),
? ? ? ? new PersonDto(3, "王五", 192, 20),
? ? ? ? new PersonDto(5, "孫七", 169, 26)
);

2.1 單屬性排序(升序)


  • list.stream().sorted(Comparator.comparing(類::屬性一));



System.out.println("1.默認排序");
personDtos.forEach(System.out::println);
System.out.println("2.按年齡升序");
personDtos.stream().sorted(Comparator.comparing(PersonDto::getAge)).forEach(System.out::println);

結(jié)果:
1.默認排序
PersonDto{id=1, name='張三', tall=174, age=32}
PersonDto{id=4, name='李四', tall=173, age=23}
PersonDto{id=4, name='趙六', tall=185, age=20}
PersonDto{id=3, name='王五', tall=192, age=20}
PersonDto{id=5, name='孫七', tall=169, age=26}
2.按年齡升序
PersonDto{id=4, name='趙六', tall=185, age=20}
PersonDto{id=3, name='王五', tall=192, age=20}
PersonDto{id=4, name='李四', tall=173, age=23}
PersonDto{id=5, name='孫七', tall=169, age=26}
PersonDto{id=1, name='張三', tall=174, age=32}

2.2 單屬性排序(降序)


  • list.stream().sorted(Comparator.comparing(類::屬性一).reversed()); //先以屬性一升序,而后對結(jié)果集進行屬性一降序

  • list.stream().sorted(Comparator.comparing(類::屬性一, Comparator.reverseOrder())); //以屬性一降序



System.out.println("3.1 按年齡倒序 (先以年齡升序,而后對結(jié)果集進行年齡降序)");
personDtos.stream().sorted(Comparator.comparing(PersonDto::getAge).reversed()).forEach(System.out::println);
System.out.println("3.2 按年齡倒序 (先以年齡升降序)");
personDtos.stream().sorted(Comparator.comparing(PersonDto::getAge,Comparator.reverseOrder())).forEach(System.out::println);

結(jié)果:
3.1 按年齡倒序 (先以年齡升序,而后對結(jié)果集進行年齡降序)
PersonDto{id=1, name='張三', tall=174, age=32}
PersonDto{id=5, name='孫七', tall=169, age=26}
PersonDto{id=4, name='李四', tall=173, age=23}
PersonDto{id=4, name='趙六', tall=185, age=20}
PersonDto{id=3, name='王五', tall=192, age=20}
3.2 按年齡倒序 (先以年齡升降序)
PersonDto{id=1, name='張三', tall=174, age=32}
PersonDto{id=5, name='孫七', tall=169, age=26}
PersonDto{id=4, name='李四', tall=173, age=23}
PersonDto{id=4, name='趙六', tall=185, age=20}
PersonDto{id=3, name='王五', tall=192, age=20}

2.3 多屬性排序(屬性一升序,屬性二升序)


  • list.stream().sorted(Comparator.comparing(類::屬性一).thenComparing(類::屬性二));//以類屬性一升序 屬性二升序



System.out.println("4.按學(xué)號升序、年齡升序");
personDtos
      .stream()
      .sorted(Comparator.comparingInt(PersonDto::getId)
            .thenComparingInt(PersonDto::getAge))
      .collect(Collectors.toList())
      .forEach(System.out::println);

結(jié)果:
4.按學(xué)號升序、年齡升序
PersonDto{id=1, name='張三', tall=174, age=32}
PersonDto{id=3, name='王五', tall=192, age=20}
PersonDto{id=4, name='趙六', tall=185, age=20}
PersonDto{id=4, name='李四', tall=173, age=23}
PersonDto{id=5, name='孫七', tall=169, age=26}

2.4 多屬性排序(屬性一降序,屬性二降序)


  • list.stream().sorted(Comparator.comparing(類::屬性一).reversed().thenComparing(類::屬性二,Comparator.reverseOrder()));//先以屬性一升序,升序結(jié)果進行屬性一降序,再進行屬性二降序

  • list.stream().sorted(Comparator.comparing(類::屬性一).thenComparing(類::屬性二).reversed());//先以屬性一升序,進行屬性二升序,再進行結(jié)果降序

  • list.stream().sorted(Comparator.comparing(類::屬性一,Comparator.reverseOrder()).thenComparing(類::屬性二,Comparator.reverseOrder()));//先以屬性一降序,再進行屬性二降序



System.out.println("5.1.按學(xué)號降序、年齡降序 (先以年齡升序,升序結(jié)果進行學(xué)號降序,再進行年齡降序)");
personDtos
      .stream()
      .sorted(Comparator.comparing(PersonDto::getId)
            .reversed()
            .thenComparing(PersonDto::getAge,Comparator.reverseOrder()))
      .collect(Collectors.toList())
      .forEach(System.out::println);

System.out.println("5.2.按學(xué)號降序、年齡降序 (先以年齡升序,再進行年齡升序,結(jié)果進行(學(xué)號&年齡)降序)");
personDtos
      .stream()
      .sorted(Comparator.comparingInt(PersonDto::getId)
            .thenComparingInt(PersonDto::getAge)
            .reversed())
      .collect(Collectors.toList())
      .forEach(System.out::println);

System.out.println("5.3.按學(xué)號降序、年齡降序 (先以學(xué)號降序,再進行年齡降序)");
personDtos
      .stream()
      .sorted(Comparator.comparing(PersonDto::getId,Comparator.reverseOrder())
            .thenComparing(PersonDto::getAge,Comparator.reverseOrder()))
      .collect(Collectors.toList())
      .forEach(System.out::println);

結(jié)果:
5.1.按學(xué)號降序、年齡降序 (先以年齡升序,升序結(jié)果進行學(xué)號降序,再進行年齡降序)
PersonDto{id=5, name='孫七', tall=169, age=26}
PersonDto{id=4, name='李四', tall=173, age=23}
PersonDto{id=4, name='趙六', tall=185, age=20}
PersonDto{id=3, name='王五', tall=192, age=20}
PersonDto{id=1, name='張三', tall=174, age=32}
5.2.按學(xué)號降序、年齡降序 (先以年齡升序,再進行年齡升序,結(jié)果進行(學(xué)號&年齡)降序)
PersonDto{id=5, name='孫七', tall=169, age=26}
PersonDto{id=4, name='李四', tall=173, age=23}
PersonDto{id=4, name='趙六', tall=185, age=20}
PersonDto{id=3, name='王五', tall=192, age=20}
PersonDto{id=1, name='張三', tall=174, age=32}
5.3.按學(xué)號降序、年齡降序 (先以學(xué)號降序,再進行年齡降序)
PersonDto{id=5, name='孫七', tall=169, age=26}
PersonDto{id=4, name='李四', tall=173, age=23}
PersonDto{id=4, name='趙六', tall=185, age=20}
PersonDto{id=3, name='王五', tall=192, age=20}
PersonDto{id=1, name='張三', tall=174, age=32}

2.5 多屬性排序(屬性一升序,屬性二降序)


  • list.stream().sorted(Comparator.comparing(類::屬性一).reversed().thenComparing(類::屬性二).reversed());//先以屬性一升序,升序結(jié)果進行屬性一降序,再進行屬性二升序,結(jié)果進行屬性一降序?qū)傩远敌?/strong>

  • list.stream().sorted(Comparator.comparing(類::屬性一).thenComparing(類::屬性二,Comparator.reverseOrder()));//先以屬性一升序,再進行屬性二降序



System.out.println("6.1 按學(xué)號升序、年齡降序 (先以學(xué)號升序,升序結(jié)果進行學(xué)號降序,再進行年齡升序,結(jié)果進行(學(xué)號&年齡)降序)");
personDtos
      .stream()
      .sorted(Comparator.comparing(PersonDto::getId).reversed()
            .thenComparing(PersonDto::getAge).reversed())
      .collect(Collectors.toList())
      .forEach(System.out::println);

System.out.println("6.2 按學(xué)號升序、年齡降序 (先以學(xué)號升序,再進行年齡降序)");
personDtos
      .stream()
      .sorted(Comparator.comparing(PersonDto::getId)
            .thenComparing(PersonDto::getAge,Comparator.reverseOrder()))
      .collect(Collectors.toList())
      .forEach(System.out::println);

結(jié)果:
6.1 按學(xué)號升序、年齡降序 (先以學(xué)號升序,升序結(jié)果進行學(xué)號降序,再進行年齡升序,結(jié)果進行(學(xué)號&年齡)降序)
PersonDto{id=1, name='張三', tall=174, age=32}
PersonDto{id=3, name='王五', tall=192, age=20}
PersonDto{id=4, name='李四', tall=173, age=23}
PersonDto{id=4, name='趙六', tall=185, age=20}
PersonDto{id=5, name='孫七', tall=169, age=26}
6.2 按學(xué)號升序、年齡降序 (先以學(xué)號升序,再進行年齡降序)
PersonDto{id=1, name='張三', tall=174, age=32}
PersonDto{id=3, name='王五', tall=192, age=20}
PersonDto{id=4, name='李四', tall=173, age=23}
PersonDto{id=4, name='趙六', tall=185, age=20}
PersonDto{id=5, name='孫七', tall=169, age=26}

2.6 多屬性排序(屬性一降序,屬性二升序)


  • list.stream().sorted(Comparator.comparing(類::屬性一).reversed().thenComparing(類::屬性二));//先以屬性一升序,升序結(jié)果進行屬性一降序,再進行屬性二升序

  • list.stream().sorted(Comparator.comparing(類::屬性一,Comparator.reverseOrder()).thenComparing(類::屬性二));//先以屬性一降序,再進行屬性二升序



System.out.println("7.1 按學(xué)號降序、年齡升序 (先以學(xué)號升序,升序結(jié)果進行學(xué)號降序,再進行年齡升序)");
personDtos
      .stream()
      .sorted(Comparator.comparing(PersonDto::getId)
            .reversed()
            .thenComparing(Comparator.comparing(PersonDto::getAge)))
      .collect(Collectors.toList())
      .forEach(System.out::println);

System.out.println("7.2 按學(xué)號降序、年齡升序 (以學(xué)號學(xué)號降序,再進行年齡升序)");
personDtos
      .stream()
      .sorted(Comparator.comparing(PersonDto::getId,Comparator.reverseOrder())
            .thenComparing(Comparator.comparing(PersonDto::getAge))
            .thenComparing(Comparator.comparing(PersonDto::getTall)))
      .collect(Collectors.toList())
      .forEach(System.out::println);
結(jié)果:
7.1 按學(xué)號降序、年齡升序 (先以學(xué)號升序,升序結(jié)果進行學(xué)號降序,再進行年齡升序)
PersonDto{id=5, name='孫七', tall=169, age=26}
PersonDto{id=4, name='趙六', tall=185, age=20}
PersonDto{id=4, name='李四', tall=173, age=23}
PersonDto{id=3, name='王五', tall=192, age=20}
PersonDto{id=1, name='張三', tall=174, age=32}
7.2 按學(xué)號降序、年齡升序 (以學(xué)號學(xué)號降序,再進行年齡升序)
PersonDto{id=5, name='孫七', tall=169, age=26}
PersonDto{id=4, name='趙六', tall=185, age=20}
PersonDto{id=4, name='李四', tall=173, age=23}
PersonDto{id=3, name='王五', tall=192, age=20}
PersonDto{id=1, name='張三', tall=174, age=32}

?文章來源地址http://www.zghlxwxcb.cn/news/detail-603315.html

3、重點關(guān)注(倒序的兩種寫法)


?。?!兩種排序完全不同:1是獲得排序結(jié)果后再排序,2是直接進行排序?。?!


1, Comparator.comparing(類::屬性一).reversed();

2, Comparator.comparing(類::屬性一,Comparator.reverseOrder());

?

?

?

到了這里,關(guān)于集合list排序,普通排序,stream(單屬性、多屬性)排序的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Stream流 - 兩個list集合對象屬性的合并、對象屬性值運算

    Stream流 - 兩個list集合對象屬性的合并、對象屬性值運算

    ?? 合并兩個 list<map>, 并將 userId 相同的所有屬性合并到一個 map 中 list1中對象的屬性:userId、userName list2中對象的屬性:userId、gender、age ?? 最終總集合中對象的屬性:userId、userName、gender、age 運行結(jié)果: 結(jié)果可見,userId 相同的所有屬性合并到集合 list1中。 ?? 合并兩個

    2024年02月06日
    瀏覽(307)
  • JAVA8中l(wèi)ist.stream()的一些簡單使用

    為函數(shù)式編程而生。對stream的任何修改都不會修改背后的數(shù)據(jù)源,比如對stream執(zhí)行過濾操作并不會刪除被過濾的元素,而是會產(chǎn)生一個不包含被過濾元素的新stream。 stream上的操作并不會立即執(zhí)行,只有等到用戶真正需要結(jié)果的時候才會執(zhí)行。 stream只能被使用一次,一旦遍歷

    2024年02月03日
    瀏覽(23)
  • Java8特性,Stream流的使用,收集成為map集合

    Java 8引入了Stream API,這是Java集合操作的一個重大改進。Stream API提供了一種高效且易于使用的處理數(shù)據(jù)的方式。 Stream是數(shù)據(jù)渠道,用于操作數(shù)據(jù)源(集合、數(shù)組等)所生成的元素序列。注意:Stream自己不會存儲元素,它不會改變源對象,反而它的操作會返回一個全新的Strea

    2024年04月22日
    瀏覽(100)
  • Java8使用Stream流實現(xiàn)List列表簡單使用

    Java8使用Stream流實現(xiàn)List列表簡單使用

    ?? 目錄 1.forEach() 2.filter(T - boolean) 3.findAny()和findFirst() 4.map(T - R) 和flatMap(T - stream) 5.distinct() 去重 6.limit(long n)和skip(long n)? 7.anyMatch(T - boolean) 8.allMatch(T - boolean) 9.noneMatch(T - boolean) Java8提供了Stream(流)處理集合的關(guān)鍵抽象概念,Stream 使用一種類似用 SQL 語句從數(shù)據(jù)庫查詢數(shù)

    2023年04月27日
    瀏覽(26)
  • Java8 - 將 List 集合轉(zhuǎn)為 Map

    1. 將List轉(zhuǎn)為Map:key=userId, value=name 輸出: 2. 將List轉(zhuǎn)為Map:key=userId, value=User對象 輸出: 3. 重復(fù)的 key 處理 如果出現(xiàn)相同的key,那么會拋出重復(fù)key的異常,比如我們將userId為3的修改為2,則會和第二個用戶沖突: 拋出異常: Collectors.toMap支持第三個參數(shù),對重復(fù)值進行選?。?/p>

    2024年02月08日
    瀏覽(111)
  • Java8 list多屬性去重

    Java8 list多屬性去重

    大家好,我是三叔,很高興這期又和大家見面了,一個奮斗在互聯(lián)網(wǎng)的打工人。 在 Java 開發(fā)中,我們經(jīng)常會面臨對 List 中的對象屬性去重的需求。然而,當(dāng)需要根據(jù)多個屬性來進行去重時,情況會稍微復(fù)雜一些。本篇博客將深入探討如何使用 Java 8 的 Stream API 來實現(xiàn) List 多屬

    2024年02月14日
    瀏覽(440)
  • Java8 stream、List forEach 遍歷對象 List 對某一字段重新賦值

    Java8 stream、List forEach 遍歷對象 List 對某一字段重新賦值 經(jīng)常會需要遍歷對象 List 對某一字段重新賦值,使用 Java8 stream 或者 List forEach 操作實現(xiàn)非常便捷。 一、Java8 stream 操作 示例代碼如下: 二、List forEach 操作 示例代碼如下: 將 Object 替換為需要提取的對象即可。 遍歷對象

    2024年02月16日
    瀏覽(24)
  • Java8的stream之groupingBy()分組排序

    Java8的stream之groupingBy()分組排序

    groupingBy()是Stream API中最強大的收集器Collector之一,提供與SQL的GROUP BY子句類似的功能。 需要指定一個屬性才能使用,通過該屬性執(zhí)行分組。我們通過提供功能接口的實現(xiàn)來實現(xiàn)這一點 - 通常通過傳遞lambda表達式。 TreeMap默認按照key升序排序,collectPlan.descendingMap()可以進行降序排

    2024年02月12日
    瀏覽(25)
  • Java8 List集合如何指定打印分隔符

    Java8 List集合如何指定打印分隔符

    背景 無論是在學(xué)習(xí)還是日常的應(yīng)用開發(fā)過程中,我們經(jīng)常會需要使用分隔符將 List 集合打印出來。 如下所示: 執(zhí)行結(jié)果如下: 如果我們想在打印的時候不打印 [] ,然后將分隔符換成 、 頓號,應(yīng)該怎么操作呢? 其實有兩種方法可以實現(xiàn): 方法一:String.join(推薦) String

    2024年02月10日
    瀏覽(90)
  • 使用stream流對List<Map<String, Object>>集合根據(jù)value進行排序

    第一步:初始化數(shù)據(jù) ========================================================= 第二步:開始排序 ① 根據(jù)數(shù)字排序 打印結(jié)果 ② 根據(jù)字符串排序 打印結(jié)果 ③ 根據(jù)時間類型排序 打印結(jié)果 總結(jié):String類型是萬金油的排序方式,基本都可以用?。?! 補充一個排序方法 打印結(jié)果 就這樣。。。

    2024年02月16日
    瀏覽(97)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包