<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Java 8 新特性:Comparator.naturalOrder | 自然排序

          共 363字,需瀏覽 1分鐘

           ·

          2022-04-24 19:58

          點(diǎn)擊關(guān)注公眾號,實(shí)用技術(shù)文章及時(shí)了解

          來源:moonce.blog.csdn.net/article/

          details/120324130

          naturalOrder是比較器功能接口的靜態(tài)方法。

          Java 8中引入的Comparator.naturalOrder方法返回一個(gè)比較器,該比較器以自然順序比較可比較對象。

          對于自然排序,一個(gè)類需要實(shí)現(xiàn)Comparable并定義compareTo方法。

          一個(gè)對象的集合根據(jù)compareTo方法以自然排序進(jìn)行排序。

          像Integer、String和Date這樣的Java類實(shí)現(xiàn)了Comparable接口并覆蓋了其compareTo方法,它們以詞表順序(lexicographic-order)進(jìn)行排序。

          從Java源代碼中找到naturalOrder方法聲明。

          static?super?T>>?Comparator?naturalOrder()?

          為了扭轉(zhuǎn)自然排序,我們可以使用Comparator.reverseOrder方法。

          在本頁面中,我們將提供一些例子,說明如何使用Comparator.naturalOrderStream.sorted、Collections.sort、List.sortArrays.sort一起對對象的集合進(jìn)行自然排序。

          與 Stream.sorted 一起使用

          Stream.sorted返回一個(gè)由這個(gè)流的元素組成的流,根據(jù)提供的比較器進(jìn)行排序。

          StreamSortedDemo.java

          import?java.util.Arrays;
          import?java.util.Comparator;
          import?java.util.List;
          public?class?StreamSortedDemo?{
          ??public?static?void?main(String[]?args)?{
          ?List?numList?=?Arrays.asList(12,?10,?15,?8,?11);
          ?numList.stream().sorted(Comparator.naturalOrder()).forEach(n?->?System.out.print(n?+?"?"));
          ?System.out.println("\n-----------");
          ?
          ?List?strList?=?Arrays.asList("Varanasi",?"Allahabad",?"Kanpur",?"Noida");
          ?strList.stream().sorted(Comparator.naturalOrder()).forEach(s?->?System.out.print(s?+?"?"));
          ?System.out.println("\n-----------");?
          ?
          ?List?stdList?=?Student.getStudentList();
          ?stdList.stream().sorted(Comparator.naturalOrder()).forEach(s?->?System.out.print(s.getName()?+?"?"));
          ?System.out.println("\n-----------");?
          ?
          ?//reverse?order?of?natural?order?using?Comparator.reverseOrder()
          ?stdList?=?Student.getStudentList();
          ?stdList.stream().sorted(Comparator.reverseOrder()).forEach(s?->?System.out.print(s.getName()?+?"?"));?
          ??}
          }?

          Student.java

          import?java.util.Arrays;
          import?java.util.List;
          public?class?Student?implements?Comparable<Student>?{
          ??private?String?name;
          ??private?int?age;
          ??public?Student(String?name,?int?age)?{
          ?this.name?=?name;
          ?this.age?=?age;
          ??}
          ??public?String?getName()?{
          ?return?name;
          ??}
          ??public?int?getAge()?{
          ?return?age;
          ??}
          ??@Override
          ??public?int?compareTo(Student?s)?{
          ?return?name.compareTo(s.getName());
          ??}
          ??public?static?List?getStudentList()?{
          ?Student?s1?=?new?Student("Ram",?18);
          ?Student?s2?=?new?Student("Shyam",?22);
          ?Student?s3?=?new?Student("Mohan",?19);
          ?Student?s4?=?new?Student("Mahesh",?20);
          ?Student?s5?=?new?Student("Krishna",?21);
          ?List?list?=?Arrays.asList(s1,?s2,?s3,?s4,?s5);
          ?return?list;
          ??}
          }?

          輸出

          8?10?11?12?15?
          -----------
          Allahabad?Kanpur?Noida?Varanasi?
          -----------
          Krishna?Mahesh?Mohan?Ram?Shyam?
          -----------
          Shyam?Ram?Mohan?Mahesh?Krish?

          與 Collections.sort 一起使用

          Collections.sort根據(jù)給定的比較器實(shí)例對指定的列表進(jìn)行排序。

          CollectionsSortDemo.java

          import?java.util.Arrays;
          import?java.util.Collections;
          import?java.util.Comparator;
          import?java.util.List;
          public?class?CollectionsSortDemo?{
          ??public?static?void?main(String[]?args)?{
          ?List?numList?=?Arrays.asList(12,?10,?15,?8,?11);
          ?Collections.sort(numList,?Comparator.naturalOrder());
          ?numList.forEach(n?->?System.out.print(n?+?"?"));
          ?System.out.println("\n-----------");
          ?
          ?List?strList?=?Arrays.asList("Varanasi",?"Allahabad",?"Kanpur",?"Noida");
          ?Collections.sort(strList,?Comparator.naturalOrder());
          ?strList.forEach(s?->?System.out.print(s?+?"?"));
          ?System.out.println("\n-----------");?
          ?
          ?List?stdList?=?Student.getStudentList();
          ?Collections.sort(stdList,?Comparator.naturalOrder());
          ?stdList.forEach(s?->?System.out.print(s.getName()?+?"?"));?
          ??}
          }?

          與 List.sort 一起使用

          List.sort根據(jù)給定的比較器實(shí)例對這個(gè)列表進(jìn)行排序。

          ListSortDemo.java

          import?java.util.Arrays;
          import?java.util.Comparator;
          import?java.util.List;
          public?class?ListSortDemo?{
          ??public?static?void?main(String[]?args)?{
          ?List?numList?=?Arrays.asList(12,?10,?15,?8,?11);
          ?numList.sort(Comparator.naturalOrder());
          ?numList.forEach(n?->?System.out.print(n?+?"?"));
          ?System.out.println("\n-----------");
          ?
          ?List?strList?=?Arrays.asList("Varanasi",?"Allahabad",?"Kanpur",?"Noida");
          ?strList.sort(Comparator.naturalOrder());
          ?strList.forEach(s?->?System.out.print(s?+?"?"));
          ?System.out.println("\n-----------");?
          ?
          ?List?stdList?=?Student.getStudentList();
          ?stdList.sort(Comparator.naturalOrder());
          ?stdList.forEach(s?->?System.out.print(s.getName()?+?"?"));
          ??}
          }?

          與 Arrays.sort 一起使用

          Arrays.sort根據(jù)指定的比較器引起的順序?qū)χ付ǖ膶ο箨嚵羞M(jìn)行排序。

          ArraysSortDemo.java

          import?java.util.Arrays;
          import?java.util.Comparator;
          public?class?ArraysSortDemo?{
          ??public?static?void?main(String[]?args)?{
          ?Student?s1?=?new?Student("Ram",?18);
          ?Student?s2?=?new?Student("Shyam",?22);
          ?Student?s3?=?new?Student("Mohan",?19);

          ?Student[]?stdArray?=?{?s1,?s2,?s3?};
          ?Arrays.sort(stdArray,?Comparator.naturalOrder());
          ?for?(Student?s?:?stdArray)?{
          ???System.out.print(s.getName()?+?"?");
          ?}
          ??}
          }?



          程序汪資料鏈接

          程序汪接的7個(gè)私活都在這里,經(jīng)驗(yàn)整理

          Java項(xiàng)目分享 ?最新整理全集,找項(xiàng)目不累啦 07版

          堪稱神級的Spring Boot手冊,從基礎(chǔ)入門到實(shí)戰(zhàn)進(jìn)階

          臥槽!字節(jié)跳動《算法中文手冊》火了,完整版 PDF 開放下載!

          臥槽!阿里大佬總結(jié)的《圖解Java》火了,完整版PDF開放下載!

          字節(jié)跳動總結(jié)的設(shè)計(jì)模式 PDF 火了,完整版開放下載!


          歡迎添加程序汪個(gè)人微信 itwang009? 進(jìn)粉絲群或圍觀朋友圈

          瀏覽 32
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲福利在线免费观看 | 亚洲高清无码视频在线观看 | 亚洲电影在线观看 | 久草超碰在线 | 欧美午夜精品久久久久免费视 |