java8:  .sorted(Comparator.comparing(BattlePassLevelConf.BattlePassLevel :: getLevel).reversed())  List流反序:321

   .sorted(Comparator.comparing(BattlePassLevelConf.BattlePassLevel :: getLevel)) List流正序:123

使用Comparator排序只需要实现他的接口并重写排序即可:compare方法拥有一个集合中需要比较的两个元素,自定义比较后认为需要往前排(索引0方向)的需要返回:放回-1,两个一样不需要动的放回:0,需要往后排(索引N方向)的放回:1.

例如下面是对,palyerList这个集合做了排序,需要往前移动的都是返回 -1, 需要往后移动的 都是返回 1,不需要动的返回 0

Collections.sort(playerList, new Comparator<Player>() {
            @Override
            public int compare(Player p1, Player p2) {
                if (p1.getState() != State.OFFLINE && p2.getState() != State.OFFLINE) {
                    if (p1.getSocialList(0).equals(Social.FRIEND) && p2.getSocialList(0).equals(Social.FRIEND)) {
                        return 0; // 都在线都是好友
                    }
                    if (p1.getSocialList(0) == Social.FRIEND) {
                        return -1; // 都在线1是好友
                    }
                    if (p2.getSocialList(0) == Social.FRIEND) {
                        return 1; // 都在线2是好友
                    }
                    return 0; // 都在线都不是好友
                }
                if (!p1.getSocialList(0).equals(State.OFFLINE)) {
                    return -1; // 1在线
                }
                if (!p2.getSocialList(0).equals(State.OFFLINE)) {
                    return 1; // 2在线
                }
                return 0; // 都不在线
            }
        });

 无序集合排序:

public static void main(String[] args) {
        Set<Integer> set = new HashSet<Integer>();
        set.add(122);
        set.add(16);
        set.add(2);
        set.add(37);
        List<Integer> list1 = set.stream().sorted().collect(Collectors.toList());
        System.out.println("写法一:" + list1);
        
     list1
= set.parallelStream().sorted(Comparator.comparing(Integer :: intValue).reversed()).collect(Collectors.toList()); System.out.println("写法二:" + list1);
  
     list1
= set.parallelStream().sorted(new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { if(o1.intValue() > o2.intValue()) { return 1; } if(o1.intValue() < o2.intValue()) { return -1; } return 0; } }).collect(Collectors.toList()); System.out.println("写法三:" + list1); }

 

相关文章:

  • 2021-10-07
  • 2021-07-07
  • 2021-09-13
  • 2021-08-14
  • 2021-07-13
  • 2022-12-23
  • 2022-12-23
  • 2021-04-04
猜你喜欢
  • 2021-08-21
  • 2021-09-02
  • 2022-12-23
  • 2022-03-02
  • 2022-01-02
  • 2022-12-23
  • 2021-08-06
相关资源
相似解决方案