Collections.sort()和通过添加到TreeSet中以获得排序后的集合之间的区别?
问题内容:
Set<Student> ts = new TreeSet<Student>();
for(Student s : studentInfo){
ts.add(s);
}
System.out.println(ts);
我已经在我的一个case块中编写了以上代码片段,以便对Student
Objects的集合进行排序。我的问题是:使用这种方法和使用Collections.sort();
方法有什么区别?
问题答案:
区别在于,a 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
提供1,而您可以为提供不同Comparator
的Collections.sort()
。因此,这 取决于您的用法
。您应该向我们提供有关您的用例的更多信息,以便为您提供完整的答案。