Java - у меня есть HashSet of Strings, и я хочу как-то отсортировать эти строки по их длине - PullRequest
0 голосов
/ 13 февраля 2012

Мне просто нужен какой-то способ найти все строки в hashSet с наибольшей длиной (будь то одна строка или несколько). Я решил, что сначала нужно каким-то образом отсортировать набор по длине строки, а затем, возможно, перебрать его (переходя от самых длинных строк к самым коротким, чтобы я мог остановить итерацию после того, как увидел все строки наибольшей длины). Может ли кто-нибудь помочь мне понять, как лучше всего это сделать (в основном это касается того, как эффективно отсортировать их по длине)? Спасибо.

1 Ответ

1 голос
/ 13 февраля 2012

Эффективность, полученная благодаря хранению строк в HashSet для быстрого поиска, не поможет вам при поиске самой длинной строки. Для этого вам необходимо обновить структуру данных.

Один из вариантов - хранить две отдельные структуры данных - TreeSet<Set<String>> наборов строк, где компаратор для TreeSet просто сравнивает длину строк плюс более раннюю HashSet. Вы можете эффективно вставить строку в эту гибридную структуру данных, просто обновив соответствующий набор в TreeSet, чтобы он содержал новую строку, и вставив строку в HashSet, как раньше. Это также позволит вам эффективно найти все самые большие строки, просто запросив у TreeSet его самый большой элемент.

Надеюсь, это поможет!

...