ищу специальную коллекцию java - PullRequest
1 голос
/ 04 мая 2020

Существует ли коллекция java, которая допускает только уникальный объект в методе get (index i) и с ним?

Сначала я думаю о treeSet, но в get нет методов get ...
что я хочу, чтобы иметь возможность:

// replace object with any class that implement the right things to make it work
Collection<Object> collection = dunno<Object>();
Object o = new Object()
Object o2 = new Object()

collection.add(o)
collection.add(o)

collection.size() // should get 1
collection.get(0) // should return o

// let's suppose that o2 is lower than o (if the collection doesn't sort the way i want i can change it anyway)

collection.add(o2)
collection.get(0) // should return o2

в основном как treeSet, но с методами get кто-нибудь знает что-то подобное?

Ответы [ 4 ]

1 голос
/ 04 мая 2020

В стандартной библиотеке нет такой коллекции, и я также не знаю ничего подобного в других распространенных библиотеках, таких как гуава или apache commons.

Таким образом, ответ: вы будете для этого нужно реализовать собственную коллекцию. Прямое решение будет использовать набор и список для обеспечения необходимого интерфейса, который будет работать, но, очевидно, увеличит объем памяти в определенной степени.

0 голосов
/ 04 мая 2020

переопределить equals и hashcode в вашем пользовательском классе используйте Arraylist, и вы можете проверить list.contains перед добавлением, чтобы удалить дубликат

0 голосов
/ 04 мая 2020

LinkedHashSet поддерживает порядок вставки, сохраняя также уникальность вставленных элементов.

Несмотря на то, что у него нет специального метода get (i), его можно реализовать одним из следующих способов: просто перебирая множество.

Вы будете платить за производительность get ().

0 голосов
/ 04 мая 2020

Вы должны использовать LinkedHashSet. Эта коллекция принимает только уникальные объекты и отслеживает порядок

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