Производительность - сложная вещь.Лучший алгоритм сортировки будет во многом зависеть от объема и типа данных, а также от того, насколько они случайны.Некоторые алгоритмы лучше всего подходят для частично отсортированных данных, другие для действительно случайных данных.
Вообще говоря, беспокойтесь об оптимизации, пока вы не определите, что рабочий код недостаточно эффективен.Сначала все заработает, а затем определите, где это узкое место.Это может быть не сортировка, а что-то еще.
Java предоставляет хорошие общие алгоритмы сортировки.Вы используете один с Collections.sort ().В Java нет SortedList, , но javafx.base содержит SortedList , который упаковывает предоставленный список и сохраняет сортировку на основе Comparator, предоставленного при создании экземпляра.Это избавит вас от необходимости переопределять базовое поведение реализации List.
Хотя ваш код выглядит так, как будто он может работать, вот несколько советов:
- pair.iterator () .next (). getKey () сгенерирует NPE, если пары пустые.
- pair.iterator (). next (). getKey () сгенерирует исключение NoSuchElementException, если пары пустые.
- pair.iterator (). Next (). GetKey () сгенерирует NPE, если в первой паре нулевой ключ пуст.
- Все это верно и для t1.
- Вы сравниваете pair.iterator (). Next (). GetKey () с t1.iterator (). Next (). ToString ().Одним из них является строковое представление пары, а другим - ключ от пары.Это правильно?
Хотя ваш код может гарантировать, что эти условия никогда не произойдут, кто-то может изменить его позже, что приведет к неприятным сюрпризам.Возможно, вы захотите добавить проверки в ваш метод add, чтобы гарантировать, что эти случаи не произойдут.Вызывать исключение IllegalArgumentException, когда аргументы недопустимы, как правило, является хорошей практикой.
Еще одна мысль: поскольку содержимое вашей коллекции всегда одинаковое, и если нет двух коллекций с одинаковыми типами пар, вы должны иметь возможность использоватьSortedMap>> вместо списка.Если вы сравниваете по ключу, этот вид карты будет сортировать вещи для вас.Вы будете put
Коллекцию, используя ключ первой пары в качестве ключа карты / входа.keySet()
, values()
и entrySet()
карты будут возвращать Коллекции, которые повторяются в отсортированном порядке.