在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;
}
答案 0 :(得分:6)
List有一个构造函数,允许您使用任何Collection创建它。然后使用Collections.sort(列表列表)方法。
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);
干杯。
答案 1 :(得分:2)
这不是一个Android问题。寻找java sort, comparator
。这是一个很好的教程:
http://docs.oracle.com/javase/tutorial/collections/interfaces/order.html
答案 2 :(得分:2)
恕我直言,我会使用SortedSet
代替标准Set
,然后使用List
接口的addAll
方法来转换集合(这是隐式的排序)到排序列表中,而不必在数据结构之外进行任何排序。
请注意,这将要求存储在这些数据结构中的对象实现Comparable
接口。
答案 3 :(得分: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);
}
});
}