java求集合按照指定元素大小排序,大小一致则随机排序

  • User.class
public class User {
    private long priority;

    private String name;

    public long getPriority() {
        return priority;
    }

    public User setPriority(long priority) {
        this.priority = priority;
        return this;
    }

    public String getName() {
        return name;
    }

    public User setName(String name) {
        this.name = name;
        return this;
    }
}
  • 待排序集合
List<User> users = Stream.of(new User().setPriority(0).setName("user1"),
                new User().setPriority(0).setName("user2"), new User().setPriority(1).setName("user3"),
                new User().setPriority(2).setName("user4"), new User().setPriority(4).setName("user5"),
                new User().setPriority(0).setName("user6"), new User().setPriority(3).setName("user7"))
                .collect(Collectors.toList());
  • 目的

求算法,将待排序数据按照指定元素priority从小到大排序,,priority大小一致希望一定要随机排序。

感谢各位大佬!

// 这种是按照priority从小到大排序,如何保证priority一致的情况下增加随机性呢

List<User> collect = users.stream().sorted(Comparator.comparing(User::getPriority)).collect(Collectors.toList());
阅读 3.1k
1 个回答

添加一个随机数即可:

users.stream().sorted(Comparator.comparing(User::getPriority)
.thenComparing(x -> RandomUtils.nextInt(0,Integer.MAX_VALUE))).collect(Collectors.toList()).forEach(System.out::println);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题