В 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;
}
В списке есть конструктор, который позволяет вам создавать его с помощью любой коллекции. Затем используйте метод 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);
Приветствия.
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);
}
});
}