Вопрос Стоит ли использовать Iterable вместо Set?

Регистрация
8 Сен 2013
Сообщения
85
Репутация
1
Спасибо
0
Монет
0
Допустим, у меня есть статичное множество, в который в будущем я не намерен добавлять ещё элементы. Стоит ли мне в таком случае предпочесть использовать интерфейс Iterable вместо интерфейса Set?



Этот вопрос у меня возник после того, как увидел, что в исходном коде Google Guava (на Github) использовано вместо интерфейса Set интерфейс Iterable.



Я заметил, что для использования Iterable её не надо напрямую импортировать, а для Set — нужен импорт.



Какие преимущества даёт использование Iterable вместо Set?

277343853_07e635e7ac7596321613e53107b1d3c9_240x240.jpg

277343853_24ebbb2060be83d7d5491ed90928e8ac_240x240.jpg

277343853_a4d46001e7088919b3a1c016edebb12d_240x240.jpg

 
Пожалуйста имейте ввиду, что этот пользователь забанен
Ты вообще понимаешь, что такое Set, а что такое Iterable? Как можно сравнивать АБСОЛЮТНО разные вещи, предназначенные для решения разных задач?
 
Преимущество, что в будущем туда можно будет запихнуть любой класс реализующий интерфейс итерабл
(Код не читал)
 
Ты любишь по старине проехаться. Гугл сначала написал говнаво, потом долждался Java 8, потом понял что яву уже ничем не спасти и перешли на скотлин и судится с бесплатной явой на миллиарды Ну Iterable это одно а Set совсем совсем другое
35619630_3370d5bae7d40d472a212534a0cd5048_800.jpg

 
Те, кто пишут библиотеки, используют в качестве параметров методов самые общие интерфейсы/классы, которые позволяет реализация метода. Для того, чтобы Вы, как пользователь библиотеки, не задумывались над тем, что ваш Set нужно превратить в List или Collection, чтобы передать в гуаву. Вы можете использовать все, что душе угодно и одинаково передавать в методы либы. Т. к. там внутри метода, разработчики либы предусмотрели это и им неважно, что вы по факту передадите - Set, List, Collection, ArrayList, LinkedList, HashSet, TreeSet и т. д. Им достаточно перечисления.
Но использовать Iterable в качестве типа переменных в своем коде? Зачем? Нафига себя так ограничивать-то. Что вы с этим одним методом перечисления делать будете?
 
Отличаются они логикой использования. Если нужно только перебирать элементы - используется Iterable, если нужна неповторяемость элементов со всеми вытекающими - используется Set, который имеет в том числе функциональность Iterable.
 
Назад
Сверху