Как отсортировать набор в список - PullRequest
1 голос
/ 12 декабря 2011

В 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 ]

6 голосов
/ 12 декабря 2011

Список имеет конструктор, который позволяет создавать его с использованием любой коллекции.Затем используйте метод Collections.sort (список списка).

Например,

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);

Cheers.

2 голосов
/ 12 декабря 2011

ИМХО, я бы использовал SortedSet вместо стандартного Set, а затем использовал бы addAll метод интерфейса List для преобразования набора(это неявно сортируется) в отсортированный список без какой-либо сортировки вне структур данных.

Обратите внимание, что для этого потребуется, чтобы объекты, хранящиеся в этих структурах данных, реализовывали интерфейс Comparable.

2 голосов
/ 12 декабря 2011

Это не совсем вопрос Android.Ищите java sort, comparator.Вот хороший учебник: http://docs.oracle.com/javase/tutorial/collections/interfaces/order.html

1 голос
/ 12 декабря 2011

Я думаю, что это может сработать для вас

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);
    }
  });
}
...