Список без дубликатов? - PullRequest
0 голосов
/ 01 ноября 2011

Я только что прочитал Существует ли реализация List без дубликатов? ответ о List, НЕ Set, реализации, которая не допускает дублирование. Принятый ответ рекомендовал Коллекции15 SetUniqueList. Есть ли какой-то эквивалент - возможно, в Гуаве? (Я искал документы и не смог найти) - в других библиотеках или есть какое-то другое популярное в настоящее время решение?

Ответы [ 2 ]

3 голосов
/ 01 ноября 2011

Мне нравится требовать правильную семантику Java, когда у меня есть коллекция, в которой не должно быть дубликатов, то есть использовать интерфейс Set. Тем не менее, во многих случаях вы хотите сохранить порядок вставки, как List для удобства, поддержание двух параллельных структур данных кажется расточительным и сложным для синхронизации. Вот почему я использую что-то вроде этого. InsertionOrderSet.java Это специальная реализация SortedSet, которая использует объект-оболочку для поддержки и index, которая может быть отсортирована компаратором, но скрывает детали реализации от внешних потребителей, поэтому она просто выглядит как обычный сейф старого типа SortedSet.

1 голос
/ 01 ноября 2011

Материал в ответе, который вы связали, кажется вполне адекватным. Я бы пошел с одним из этих решений. В качестве альтернативы, вы можете просто расширить класс ArrayList и переопределить некоторые методы, которые проверяют HashSet перед вызовом super.method для того же метода. Просто добавьте поле «Задать как экземпляр», используйте его для проверки дубликатов и добавьте / удалите все элементы, которые будут добавлены / удалены из списка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...