【问题标题】:In what order Set items are sorted when converting to Array转换为 Array 时,Set 项按什么顺序排序
【发布时间】:2020-01-10 02:25:37
【问题描述】:
我对转换时使用什么标准对 Set 进行排序感兴趣?这怎么能被覆盖?因为,据我了解, Set 不存储排序信息。我正在谈论的转换示例:
Set<Object> objectsSet = new HashSet<>();
Objects[] objectsArray = (Objects[]) objectsSet.toArray();
【问题讨论】:
标签:
java
arrays
sorting
arraylist
set
【解决方案1】:
未排序。 LinkedHashSet 保留插入顺序; HashSet 将在内部由 hashCode() 订购。如果您想要一个已排序的Set,请使用TreeSet(实现SortedSet)。
SortedSet<Object> objectsSet = new TreeSet<>();
Objects[] objectsArray = (Objects[]) objectsSet.toArray();
至于改变顺序(升序或降序),可以在构造Set时使用TreeSet(Comparator<? super E> comparator)。例如,对整数进行倒序排序;
SortedSet<Integer> intSet = new TreeSet<>(Comparator.reverseOrder());