Это звучит как вопросы для интервью, поэтому я отвечу на них как вопросы для интервью ...
Is it possible to allow duplicate values in the Set collection?
Да, но для этого необходимо, чтобы лицо, реализующее Set
, нарушило проектный контракт , на котором строится Set
. По сути, я мог бы написать класс, который расширяет Set
и не выполняет обещания Set
.
Кроме того, возможны другие нарушения. Я мог бы использовать Set
реализацию, которая опирается на Java hashCode()
контракт. Тогда, если я предоставлю Object
, который нарушает контракт хеш-кода Java, я мог бы поместить два набора в набор, которые равны, но дают разные хеш-коды (потому что они могут не проверяться на равенство друг с другом из-за того, что находятся в разных хэш-ведро цепи.
Is there any way to make the elements unique and have some copies of them?
Это в основном зависит от того, как вы определяете уникальность. Если уникальность объекта определяется его значением, то можно иметь несколько копий одного и того же уникального объекта; однако, если уникальность объекта определяется его экземпляром, то по определению было бы невозможно иметь несколько копий одного и того же объекта. Однако вы можете иметь несколько ссылок на них.
Is there any functions for Set collection for having duplicate values in it?
Интерфейс Set
не имеет никаких функций для обнаружения / сообщения о дубликатах; однако, он основан на интерфейсе Коллекции, который должен поддерживать интерфейс Списка, таким образом, можно передавать дубликаты в Набор; однако, правильно реализованный Set
будет просто игнорировать дубликаты и предоставит одну копию каждого элемента, определенного как уникальный.