Как отсортировать набор в списке

В 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;
 }
</packageinfo></packageinfo></packageinfo></packageinfo></packageinfo></packageinfo>
4 ответа

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

Например

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

Приветствия.


IMHO, я бы использовал SortedSet вместо стандартного Set, а затем использовал метод ) rel=nofollow> addAll интерфейса List для преобразования набора (который неявно отсортирован) в отсортированный список без необходимости выполнять сортировку вне структур данных.

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


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


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

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);
 }
 });
}
</packageinfo></packageinfo>

licensed under cc by-sa 3.0 with attribution.