一尘不染

Collections.sort()和通过添加到TreeSet中以获得排序后的集合之间的区别?

algorithm

 Set<Student> ts = new TreeSet<Student>();

    for(Student s : studentInfo){
         ts.add(s);
    }

    System.out.println(ts);

我已经在我的一个case块中编写了以上代码片段,以便对Student
Objects的集合进行排序。我的问题是:使用这种方法和使用Collections.sort();方法有什么区别?


阅读 250

收藏
2020-07-28

共1个答案

一尘不染

区别在于,a TreeSet可以使您始终对数据进行排序,而在上Collections.sort()调用时,该方法将对数据进行排序Set

的时间复杂度Collections.sort()O(n*log(n))同时TreeSetadd()的复杂性log(n)。如果您使用相同大小的数据,则TreeSet的情况下的复杂度将相同,因为您需要重复add操作n时间。

因此,您只需要决定是要一直Set订购还是在某个时候订购。如果您的代码中有某种情况下不需要排序,则不需要,TreeSet但如果始终需要对其进行排序,则应使用TreeSet

请记住 ,如果要排序,则Set必须List先从中创建一个,这可能会带来一些开销!

另一个警告: 正如其他人所提到的,TreeSet您只能为1
Comparator提供1,而您可以为提供不同ComparatorCollections.sort()。因此,这 取决于您的用法
。您应该向我们提供有关您的用例的更多信息,以便为您提供完整的答案。

2020-07-28