Интересно, почему нет способа произвольного доступа get(Object)
как Map
в Java Set
. В текущей реализации повторение всей коллекции кажется ненужным накладными расходами.Нет метода произвольного доступа для Java Set
ответ
> boolean contains(Object o)
Returns true if this set contains the specified element.
(от https://docs.oracle.com/javase/7/docs/api/java/util/Set.html)
Но сложность времени - это O (n), что неэффективно по сравнению с методом get() 'random access. –
Где говорится, что сложность O (n)? Это зависит от того, что на самом деле реализует интерфейс. HashSet будет O (1) –
Источник Java (6) http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b27/java/util/HashSet.java показывает он просто вызывает 'containsKey' на HashMap. Никакая итерация по набору –
Set
не о случайного поиска элемента — речь идет о тестировании на наличие в нем элементов. Если ваше приложение требует поиска, то то, что ему действительно нужно, - это сопоставление идентичности (карта, где вы находитесь put(key, key)
). Тогда вы сможете get
объект, как хотите. Также обратите внимание, что вы не будете нести накладные расходы, сделав это, потому что HashSet
реализован в терминах HashMap
почти точно таким же образом.
Как указывали другие, Set
моделируется более или менее после математического набора и не относится к произвольному доступу. Однако, если вам абсолютно необходим доступ к одному элементу, вы можете сделать что-то вроде этого:
Set<Object> mySet = new HashSet<Object>();
mySet.add("one");
Object access = mySet.toArray()[0];
- 1. Получить функцию делегата для произвольного метода java
- 2. Почему в java.util нет произвольного доступа
- 3. ... нет метода доступа
- 4. Чтение из файла произвольного доступа в Java
- 5. Использование файла произвольного доступа для обновления части файла в Java
- 6. Почему у VolatileImage нет метода set/getPixel()
- 7. Как записать файл произвольного доступа?
- 8. VB.net - Перезаписывающий файл произвольного доступа
- 9. favicon для произвольного содержимого без доступа root
- 10. Архив произвольного доступа для использования Unix
- 11. Java - downcast для произвольного класса?
- 12. AnythingSlider в режиме «произвольного доступа»
- 13. Предоставляют ли какие-либо библиотеки Java реализацию очереди произвольного доступа?
- 14. Оптимизация билинейной выборки произвольного доступа
- 15. Почему нет метода Set в C++ для повторного поля protobuf?
- 16. Ищите реализацию в файле произвольного доступа
- 17. Java, ошибка нет подходящего метода для add()
- 18. VBA создание/обновление произвольного количества таблиц доступа
- 19. Перегрузка метода Java с параметром Set type
- 20. Добавить данные в файл произвольного доступа: java gui
- 21. Зачем обращаться к файлу произвольного доступа сбой платформы Java?
- 22. Прочитать файл произвольного доступа в C#
- 23. Удалить первые байты файла произвольного доступа в Java
- 24. Нет выхода из метода Java
- 25. Нет метода Graphics2D.draw в java?
- 26. Использование Samba для произвольного доступа без установки файловой системы?
- 27. Groovy Нет подписи метода, вызывающего библиотеку Java
- 28. {get; set;} и модификаторы доступа
- 29. Почему Java ограничивает модификатор доступа метода скрытия
- 30. Weka «Use Training Set» в методе метода тестирования для Java
Вот как работает набор/сумка по дизайну. – duffymo
@duffymo, я так не думаю. Ничто не мешает прямому тестированию на членство в элементе в наборе. Ничто в дизайне не приводит к итерации –
Какой ключ вы планируете использовать для доступа к элементу? Я думаю, что поведение больше похоже на сумку: доберитесь до и возьмите произвольную. Я бы назвал отсутствие в API доказательством моего заявления. – duffymo