Вложенные циклы не всегда O (N ^ 2). См. Мой старый пост для примера: Я схожу с ума от того, что думаю, что эта программа O (n) во время выполнения? Моя ТА говорит, что это O (n ^ 2)
В вашем случае, длина электронных писем [i] зависит от размера вашего массива писем (который вы называете n)?
Ответ предоставленный ФП не самый лучший. Это неэффективно, так как создает новый список
и ненужный новый массив. Кроме того, он вызывает «непроверенные» предупреждения из-за проблем безопасности типов вокруг универсальных массивов.
Вместо этого используйте что-то вроде этого:
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);
List myList = new ArrayList(collection);
Collections.sort(myList);
… однако должно помочь. Если возможно, добавьте аромата с помощью дженериков.
Нет единого способа сделать это. Используйте это:
@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);
}
Sorted установите:
return new TreeSet(setIWantSorted);
или:
return new ArrayList(new TreeSet(setIWantSorted));
Вы можете преобразовать набор в ArrayList
, где вы можете отсортировать ArrayList
, используя Collections.sort (List)
.
Вот код:
keySet = (Set) map.keySet();
ArrayList list = new ArrayList(keySet);
Collections.sort(list);