Представьте, что мне нужно создать коллекцию элементов, где порядок может или не имеет значения. Фактически все, что я планирую делать, это использовать итератор. Я замечаю, что большинство моих коллег используют ArrayList vs LinkedHashSet/HashSet. Мой вопрос: если я знаю, что эти элементы должны быть уникальными, я должен использовать набор или список? Эффективно это не имеет особого значения, но не позволяет более эффективно передать, что элементы уникальны?
Я считаю, что это интересный вопрос для крупных корпоративных приложений по нескольким причинам: 1) Если вы не можете гарантировать качество кода в целом, использование Set может быть опасным. Зачем? Потому что equals() и hashcode могут быть неправильно переопределены, и, таким образом, использование Set может вызвать некоторые неприятные проблемы. 2) Использование списка более устойчиво к будущим изменениям. Если дубликаты по любой причине становятся возможными, не нужно беспокоиться.
По существу это сводится к следующему: если я знаю, что я должен ожидать уникальные элементы, должен ли я одобрить Set over List во всех случаях?
Изменить: я полагаю, я также спрашиваю: должен ли Set использоваться обеспечить, что дубликаты не добавлены, или же он может также использоваться для единственной цели иллюстрации что нет дубликатов для простоты понимания?