如何将Set排序到列表

时间:2011-12-12 16:00:53

标签: java android sorting arraylist set

在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;
    }

4 个答案:

答案 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);
    }
  });
}