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; // 都不在线 } });