Mer*_*cer 51 java sorting collections
我有一个通用的Collection,我试图找出如何排序其中包含的项目.我尝试了一些东西,但我不能让它们中的任何一个工作.
Ale*_*yak 68
集合本身没有预定义的顺序,因此您必须将它们转换为java.util.List.然后你可以使用一种形式java.util.Collections.sort
Collection< T > collection = ...;
List< T > list = new ArrayList< T >( collection );
Collections.sort( list );
// or
Collections.sort( list, new Comparator< T >( ){...} );
// list now is sorted
Run Code Online (Sandbox Code Playgroud)
您有两个基本选项java.util.Collections:
<T extends Comparable<? super T>> void sort(List<T> list)
T implements Comparable您对自然顺序很好<T> void sort(List<T> list, Comparator<? super T> c)
Comparator.根据具体Collection情况,你也可以看看SortedSet或SortedMap.
如果您的集合对象是一个列表,我将使用其他答案中提出的排序方法.
但是,如果它不是列表,并且您并不真正关心返回什么类型的Collection对象,我认为创建TreeSet而不是List更快:
TreeSet sortedSet = new TreeSet(myComparator);
sortedSet.addAll(myCollectionToBeSorted);
Run Code Online (Sandbox Code Playgroud)
你不能得到T.它必须由提供者注入:
Collection<T extends Comparable>
Run Code Online (Sandbox Code Playgroud)
或通过比较器
Collections.sort(...)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
114774 次 |
| 最近记录: |