java8排序


  1. 一:對整數進行排序
  2. List<Integer> numbers =Arrays.asList(6,2,1,4,9);

  3. System.out.println(numbers);//[6, 2, 1, 4, 9]

  4. numbers.sort(Comparator.naturalOrder());

  5. System.out.println(numbers);//[1, 2, 4, 6, 9]

  6. 二、按字符串字段對列表進行排序
    1. List<Movie> movies =Arrays.asList(

    2. newMovie("Lord of the rings"),

    3. newMovie("Back to the future"),

    4. newMovie("Carlito's way"),

    5. newMovie("Pulp fiction"));

    6. movies.sort(Comparator.comparing(Movie::getTitle));

    7. movies.forEach(System.out::println);

    8. 提取的類型是String,而String實現了 Comparable接口,所以list能正確排序。
    9. 三、按double字段排序列表

    10. List<Movie> movies =Arrays.asList(

    11. newMovie("Lord of the rings",8.8),

    12. newMovie("Back to the future",8.5),

    13. newMovie("Carlito's way",7.9),

    14. newMovie("Pulp fiction",8.9));

    15. movies.sort(Comparator.comparingDouble(Movie::getRating)

    16. .reversed());

    17. movies.forEach(System.out::println);

    18. 我們使用反轉函數( reversed)來反轉默認從低到高的自然排序, Comparator.comparingDouble() 底層使用 Double.compare()實現。如果需要比較 intlong,可以分別使用 comparisonInt()comparisonLong()
    19. 四、使用自定義比較器多列表進行排序
      1. List<Movie> movies =Arrays.asList(

      2. newMovie("Lord of the rings",8.8,true),

      3. newMovie("Back to the future",8.5,false),

      4. newMovie("Carlito's way",7.9,true),

      5. newMovie("Pulp fiction",8.9,false));

      6. movies.sort(newComparator<Movie>(){

      7. @Override

      8. publicint compare(Movie m1,Movie m2){

      9. if(m1.getStarred()== m2.getStarred()){

      10. return0;

      11. }

      12. return m1.getStarred()?-1:1;

      13. }

      14. });

      15. 我們可以使用 lambda表達式而不是匿名類( Anonymousclass),如下所示:
      16. movies.forEach(System.out::println);

        1. movies.sort((m1, m2)->{

        2. if(m1.getStarred()== m2.getStarred()){

        3. return0;

        4. }

        5. return m1.getStarred()?-1:1;

        6. });

        7. 也可以使用 Comparator.comparing():
          1. movies.sort(Comparator.comparing(Movie::getStarred,(star1, star2)->{

          2. if(star1 == star2){

          3. return0;

          4. }

          5. return star1 ?-1:1;

          6. }));

  1. List<Integer> numbers =Arrays.asList(6,2,1,4,9);

  2. System.out.println(numbers);//[6, 2, 1, 4, 9]

  3. numbers.sort(Comparator.naturalOrder());

  4. System.out.println(numbers);//[1, 2, 4, 6, 9]

 

 

 

原文鏈接:https://dzone.com/articles/java-8-comparator-how-to-sort-a-list

 

作者: Mario Pio Gioiosa

 

譯者:Steephan

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM