2011-12-12 50 views
1

在Android中,我有一个Set,我想将它变成排序List如何将一个集合分类到一个列表

如何使用Collections.sort()

protected List<PackageInfo> doInBackground(Void... params) { 

     Set<PackageInfo> adPackages = new HashSet<PackageInfo>(); 
     //ArrayList<PackageInfo> adPackages = new ArrayList<PackageInfo>(); 

     [..............] 

     return new ArrayList<PackageInfo>(adPackages); 
     //return adPackages; 
    } 

回答

6

列表有一个构造函数,它允许您使用任何Collection创建它。然后使用Collections.sort(List list)方法。

E.g.

Set<String> set = new HashSet<String>(); 
set.add("This is a unsorted set"); 
List<String> list = new ArrayList<String>(set); 
Collections.sort(list); // or Collections.sort(list, Comparator); 

干杯。

+0

如果你打算建议用另一个数据结构填充一个列表,为什么不改用* sorted *数据结构来通知OP? – mre

+0

因为其他人已经说过这种方法..我只是给出了一个不同的选择。可能有一种情况,OP被限制在一个有序列表中(尽管我无法想象为什么),但我的答案只是给出另一种选择。 :) –

1

我想,这可能会为你

public void sortArrayPackage(ArrayList<PackageInfo> array) 
{ 
    Collections.sort(array, new Comparator<PackageInfo>(){ 
    public int compare(PackageInfo o1, PackageInfo o2) { 
     System.setProperty("java.util.Arrays.useLegacyMergeSort", "true"); 
     String package1 = o1.packageName; 
     String package2 = o2.packageName; 

     return package1.compareTo(package2); 
    } 
    }); 
} 
2

恕我直言工作,我会用一个SortedSet而不是标准Set,然后使用List接口addAll方法将集合(隐式排序)转换为排序列表,而不必在数据结构之外进行任何排序。

请注意,这将要求存储在这些数据结构中的对象实现接口。

相关问题