Стоит ли использовать Iterable вместо Set? - Tera Online

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

Регистрация
8 Сен 2013
Сообщения
90
Репутация
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

 
Регистрация
28 Окт 2012
Сообщения
71
Репутация
0
Спасибо
0
Монет
0
Пожалуйста имейте ввиду, что этот пользователь забанен
Ты вообще понимаешь, что такое Set, а что такое Iterable? Как можно сравнивать АБСОЛЮТНО разные вещи, предназначенные для решения разных задач?
 
Регистрация
30 Июн 2013
Сообщения
91
Репутация
-3
Спасибо
0
Монет
0
Ты любишь по старине проехаться. Гугл сначала написал говнаво, потом долждался Java 8, потом понял что яву уже ничем не спасти и перешли на скотлин и судится с бесплатной явой на миллиарды Ну Iterable это одно а Set совсем совсем другое
35619630_3370d5bae7d40d472a212534a0cd5048_800.jpg

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