Set<Student> ts = new TreeSet<Student>();
for(Student s : studentInfo){
ts.add(s);
}
System.out.println(ts);
为了对一组学生对象进行排序,我在我的一个案例 block 中编写了上面的代码片段。
我的问题是:使用这种方法和使用 Collections.sort();
方法有什么区别。
最佳答案
不同之处在于,TreeSet
让您始终对数据进行排序,而 Collections.sort()
方法会在您调用 上的方法时对数据进行排序设置
。
Collections.sort()
的时间复杂度是 O(n*log(n))
而 TreeSet
的 add()
的复杂度是log(n)
。如果您使用相同大小的数据,那么 TreeSet
情况下的复杂度将相同,因为您重复了 add
操作 n
次.
因此,您只需决定是要始终订购您的Set
还是仅在某个时候订购。如果您的代码中存在不需要排序的情况,那么您就不需要 TreeSet
但如果您总是需要对它进行排序,那么您应该使用 TreeSet
.
请记住,如果您想对Set
进行排序,您必须首先从中创建一个List
,这可能会引入一些开销!
另一个警告:正如其他人提到的,TreeSet
只能采用 1 个 Comparator
,而您可以提供不同的 Comparator
到 Collections.sort()
。所以这取决于您的使用情况。您应该向我们提供有关您的用例的更多信息,以便我们给您一个全面的答复。
关于java - Collections.sort() 和通过添加到 TreeSet 中获取排序集合之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18760752/