Set<Student> ts = new TreeSet<Student>();
for(Student s : studentInfo){
ts.add(s);
}
System.out.println(ts);
我已经在一个case块中编写了上述片段,以便对学生对象集合进行排序。
我的问题是:使用这种方法与使用Collections.sort();
方法有什么区别。
Set<Student> ts = new TreeSet<Student>();
for(Student s : studentInfo){
ts.add(s);
}
System.out.println(ts);
我已经在一个case块中编写了上述片段,以便对学生对象集合进行排序。
我的问题是:使用这种方法与使用Collections.sort();
方法有什么区别。
TreeSet
会始终保持数据排序,而调用 Collections.sort()
方法时才对 Set
进行排序。
Collections.sort()
的时间复杂度为 O(n*log(n))
,而 TreeSet
的 add()
复杂度是 log(n)
。如果使用相同大小的数据,则在 TreeSet
的情况下复杂度将相同,因为您需要重复执行 add
操作 n
次。Set
,还是仅在某些时刻排序。如果代码中有一种情况不需要排序,则不需要使用 TreeSet
,但如果始终需要排序,则应使用 TreeSet
。Set
进行排序,必须首先从中创建一个 List
,这可能会引入一些开销!TreeSet
只能使用 1 个 Comparator
,而您可以向 Collections.sort()
提供不同的 Comparator
。因此,它取决于您的使用情况。为了给您全面的答案,您应该提供更多关于您的用例的信息。LinkedList
,并在第一个 case 中向其中添加了 Student 对象。我在第二个 case 块中使用了 TreeSet
来对同一集合进行排序。 - Anjan BaradwajCollections.sort()
。 - Adam Arold1) 与所有Set一样,TreeSet会拒绝重复的值。
2) 当你插入元素时,TreeSet会在每次插入后保持排序,而使用Collections.sort()排序的列表只能在调用sort()后进行排序(并且不会在添加元素后保持此排序)。
3) Collections.sort()允许使用不同的Comparators根据不同的标准对列表进行排序。对于TreeSet,您也可以提供一个Comparator,但您需要为每个Comparator实例化一个新的TreeSet。
TreeMap
提供一个Comparator
。 - Adam AroldTreeSet
? - Prasad KharkarTreeSet
使用了一个 Map
。 - Adam Arold