Java List 排序sort 和sorted方法說明


Java List 排序Sort 和Sorted

1、sort:  list.sort 方法是list方法 對原有list 元素順序位置進行更改排序

  如:

    listP.sort((x1,x2)->x1.getName().compareTo(x2.name));

2、sorted: sorted 方法是對list轉換成stream流的方法,不對有有list元素排序,而是返回一個排序后的新list:

    如:

List<Fruit> listP2 = listP.stream().sorted(Comparator.comparing(Fruit::getName).reversed().thenComparing(Fruit::getWeight)).collect(Collectors.toList());

如果想第二個排序字段倒序排可以如下寫法
List<Fruit> listP2 = listP.stream().sorted(Comparator.comparing(Fruit::getName).reversed()
                        .thenComparing(Comparator.comparing(Fruit::getWeight).reversed())).collect(Collectors.toList());



下面用多種方式實例進行說明
   try {
            Fruit p1 = new Fruit();
            p1.setName("apple");
            p1.setWeight(8);

            Fruit p2 = new Fruit();
            p2.setName("apple");
            p2.setWeight(13);
            Fruit p3 = new Fruit();
            p3.setName("pear");
            p3.setWeight(10);

            Fruit p4 = new Fruit();
            p4.setName("pear");
            p4.setWeight(16);
            Fruit p5 = new Fruit();
            p5.setName("wang");
            p5.setWeight(10);

            Fruit p6 = new Fruit();
            p6.setName("banana");
            p6.setWeight(2);

            List<Fruit> listP = Arrays.asList(p1, p2, p3, p4, p5, p6);
           // list.sort 對原有list 元素順序位置進行更改排序
            // lamda表達式實現 Comparator  簡要主法
            listP.sort((x1,x2)->x1.getName().compareTo(x2.name));
            // lamda 表達式實現自定義方法
            listP.sort((x1,x2)-> {
              if(x1.getWeight()>x2.getWeight()){
                  return 1;
              } else if(x1.getWeight()<x2.getWeight()){
                  return -1;
              }else{
                  return 0;
              }
            });

            //lamda 表達式 顯示實現 comparator方法
            listP.sort(new Comparator<Fruit>() {
                @Override
                public int compare(Fruit o1, Fruit o2) {
                    return o1.getName().compareTo(o2.getName());
                }
            });

            // list sort 實現多字段排序
            Comparator<Fruit> nameComparator=Comparator.comparing(x-> x.getName());
            Comparator<Fruit> weightComparator=Comparator.comparing(x-> x.getWeight());
            listP.sort(nameComparator.thenComparing(weightComparator));


            // list-stream()->sorted 進行排序反回排序后新list,原list元素順序不變
            List<Fruit> listP2 = listP.stream().sorted(Comparator.comparing(Fruit::getName).reversed().thenComparing(Fruit::getWeight)).collect(Collectors.toList());

        } catch (Exception e) {
            e.printStackTrace();
        }


    }

  3、List<String> list 排序  下面代碼實例

  String[] strC = new String[]{"賬單優惠", "現金", "賬單減免", "掃碼支付", "團購", "會員卡", "銀行卡"};
        List<String> listCategory = new ArrayList<>();
        listCategory = Arrays.asList(strC);
        List<String> list2 = listCategory.stream().sorted(String::compareTo).collect(Collectors.toList());
        List<String> list3 = listCategory.stream().sorted((x1, x2) ->
        {
            return x1.compareTo(x2);
        }).collect(Collectors.toList());

        Collections.sort(listCategory);
        Collections.reverse(listCategory);

 


免責聲明!

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



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