实现根据指定的数组排序,切未指定的属性,在指定之前
String[] strs = { "北部网信","其他","合计","南部" };
Arrays.sort(strs);
log.info("-{}", JSONObject.toJSONString(strs));
String[] sorts = { "其他","合计" };
FixedOrderComparator<String> fixedOrderComparator = new FixedOrderComparator<String>(sorts);
fixedOrderComparator.setUnknownObjectBehavior(FixedOrderComparator.UnknownObjectBehavior.BEFORE);
Arrays.sort(strs, fixedOrderComparator);
log.info("-{}", JSONObject.toJSONString(strs));
执行结果
2019-04-12 14:25:35 [main] INFO FixedOrderComparatorTest:29 - -["其他","北部网信","南部","合计"]
2019-04-12 14:25:35 [main] INFO FixedOrderComparatorTest:34 - -["北部网信","南部","其他","合计"]
实现java bean 中属性排序
String[] sorts = { "其他","合计" };
List<Team> teams = new ArrayList<>();
Team team = new Team();
team.setName("北部网信");
teams.add(team);
Team team1 = new Team();
team1.setName("其他");
teams.add(team1);
Team team2 = new Team();
team2.setName("合计");
teams.add(team2);
Team team3 = new Team();
team3.setName("南部");
teams.add(team3);
FixedOrderComparator<String> fixedOrderComparator = new FixedOrderComparator<String>(sorts);
fixedOrderComparator.setUnknownObjectBehavior(FixedOrderComparator.UnknownObjectBehavior.BEFORE);
BeanComparator beanComparator = new BeanComparator("name",fixedOrderComparator);
Collections.sort(teams, beanComparator);
log.info("-{}", JSONObject.toJSONString(teams));
执行结果:
[{"name":"北部网信"},{"name":"南部"},{"name":"其他"},{"name":"合计"}]