Как я сортирую Набор к Списку в Java?

Вложенные циклы не всегда O (N ^ 2). См. Мой старый пост для примера: Я схожу с ума от того, что думаю, что эта программа O (n) во время выполнения? Моя ТА говорит, что это O (n ^ 2)

В вашем случае, длина электронных писем [i] зависит от размера вашего массива писем (который вы называете n)?

164
задан slhck 17 October 2011 в 19:13
поделиться

5 ответов

Ответ предоставленный ФП не самый лучший. Это неэффективно, так как создает новый список и ненужный новый массив. Кроме того, он вызывает «непроверенные» предупреждения из-за проблем безопасности типов вокруг универсальных массивов.

Вместо этого используйте что-то вроде этого:

public static
<T extends Comparable<? super T>> List<T> asSortedList(Collection<T> c) {
  List<T> list = new ArrayList<T>(c);
  java.util.Collections.sort(list);
  return list;
}

Вот пример использования:

Map<Integer, String> map = new HashMap<Integer, String>();
/* Add entries to the map. */
...
/* Now get a sorted list of the *values* in the map. */
Collection<String> unsorted = map.values();
List<String> sorted = Util.asSortedList(unsorted);
211
ответ дан Community 23 November 2019 в 21:12
поделиться
List myList = new ArrayList(collection);
Collections.sort(myList);

… однако должно помочь. Если возможно, добавьте аромата с помощью дженериков.

43
ответ дан slhck 23 November 2019 в 21:12
поделиться

Нет единого способа сделать это. Используйте это:

@SuppressWarnings("unchecked")
public static <T extends Comparable> List<T> asSortedList(Collection<T> collection) {
  T[] array = collection.toArray(
    (T[])new Comparable[collection.size()]);
  Arrays.sort(array);
  return Arrays.asList(array);
}
5
ответ дан Jeremy Stein 23 November 2019 в 21:12
поделиться

Sorted установите:

return new TreeSet(setIWantSorted);

или:

return new ArrayList(new TreeSet(setIWantSorted));
73
ответ дан slhck 23 November 2019 в 21:12
поделиться

Вы можете преобразовать набор в ArrayList , где вы можете отсортировать ArrayList , используя Collections.sort (List) .

Вот код:

keySet = (Set) map.keySet();
ArrayList list = new ArrayList(keySet);     
Collections.sort(list);
3
ответ дан 23 November 2019 в 21:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: