在非排序集中谈论顺序是没有意义的。
TreeSet如果您想要按年龄排序的套装,则应该使用类似的方法。
Comparator<User> byAge = Comparator.comparingInt(User::getAge);Supplier<TreeSet<User>> user = () -> new TreeSet<User>(byAge);TreeSet<User> userSet = users.stream().collect(Collectors.toCollection(user));
如果上面的代码对您来说很丑陋,您也可以将当前的用户集添加到中
TreeSet,但是还会有一个复制步骤。
使用a
TreeSet和a
之间的主要区别在于
linkedHashSet维护排序顺序。使用
TreeSet,在添加新用户时,将保持排序。使用
linkedHashSet,添加新用户可能会破坏按年龄排序的顺序,因为它
linkedHashSet仅保持插入顺序。
编辑:
根据以下@Federico的评论,
TreeSet实际对象将使用其比较器来确定
User对象的相等性。如果您想首先通过方法删除所有重复的用户
equals(),那么我们可以先将所有用户添加到中
HashSet,然后使用上述方法将其添加到中
TreeSet。
Set<User> set = new HashSet<>(users); // remove duplicates via equalsTreeSet<User> userSet = set.stream().collect(Collectors.toCollection(user));



