Anj*_*waj 10 java algorithm collections data-structures
Set<Student> ts = new TreeSet<Student>();
for(Student s : studentInfo){
ts.add(s);
}
System.out.println(ts);
Run Code Online (Sandbox Code Playgroud)
为了对学生对象的集合进行排序,我在上面的一个case块中写了上面的代码片段.我的问题是:使用这种方法和使用Collections.sort();方法有什么区别.
Ada*_*old 12
不同之处在于,当您在方法上调用方法时,方法会对您的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而你可以提供不同的Comparators Collections.sort().所以这取决于你的用法.您应该向我们提供有关您的用例的更多信息,以便给您一个彻底的答案.
1)像所有Set一样的TreeSet拒绝重复值。
2)TreeSet每次插入元素时都会维护排序,而使用Collections.sort()排序的列表只会在调用sort()之后进行排序(并且不会在add()时保持这种排序)。
3)Collections.sort()允许使用不同的Comparator对列表进行排序。使用TreeSet,您还可以提供一个Comparator,但是您需要为每个Comparator实例化一个TreeSet。