java - collections.sort 方法仅用于 List 类型的集合吗?

标签 java collections

friend 们,我是 Java-Collection 的新手。我想问 Collections.sort() 方法是否仅用于/由 List 类型的集合使用。我无法对以下代码进行排序:

Collection collection=new HashSet();
collection.add("zebra");
collection.add("frog");
collection.add("bison");
collection.add("puma");
Collections.sort(collection); //error...why??

我知道 HashSet 用于唯一元素。但是有什么办法可以对这个集合进行排序吗?

最佳答案

Collections.sort method期望一个实现 List<T> 的集合界面。这是有道理的,因为列表有一个定义的顺序。换句话说,您的程序可以完全控制列表中内容的顺序。

与列表不同,集合要么无序,要么指定它们自己的特定顺序。这就是为什么要对 Set 进行排序的原因没有意义:是集合而不是您的程序定义了集合中项目的顺序。您的程序可以提供自定义该排序的逻辑,但您不能采用现有集合,并从外部强制对其项目进行不同的排序。

如果您想按排序顺序获取集合集合的所有项目,请将您的集合复制到数组列表中,然后对结果进行排序。

关于java - collections.sort 方法仅用于 List 类型的集合吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23474574/

相关文章:

mysql - 在 laravel 中调用未定义的方法 App\Student::contains()

java - 检查 ArrayList 是否为空

java - Java 是否保证 Object.getClass() == Object.getClass()?

java - 循环中的 ConcurrentModificationException

java - SWT:将事件 shell 捕获到全屏模式

java - 如何在 Android 中正确排序数组中的大写和小写字符串?

java - 基于引用相等性而不是 "value"相等性将 java.util.Date 作为键存储在 Map 中

java - 在 ArrayList 中保存唯一字符串列表

java getenv Windows系统环境变量

java - 在哪里正确放置 while-do 语句?