Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.01.2016, 19:04   #1
guroDragon
Пользователь
 
Регистрация: 09.09.2013
Сообщений: 83
По умолчанию Для чего объявлять переменную общего типа а инициализировать частным

Всем привет!

Ребят, расскажите, плиз, я чёто не оч вник в тему.

Вот такой код, например
Код:
Set<Integer> set = new TreeSet<>;
Зачем мы слева пишем класс Сет, а справа класс ТриСет?
Ну это как пример.
Почему, если нам нужен ТриСет, не написать так
Код:
TreeSet<Integer> set = new TreeSet<>;
Мы урезаем функционал, уточняем или что, объясните.

Спасибо)
guroDragon вне форума Ответить с цитированием
Старый 29.01.2016, 19:43   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну если просто локальная переменная, то смысла может и не много.
А если например функция принимает Set, то ей можно передать и TreeSet, и какой-нибудь другой SomethingSet, а не только один TreeSet.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 29.01.2016, 21:32   #3
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

не ссорьтесь...
TreeSet, ДваSet в сущности - какая разница?
главное чтобы вам это доставляло удовольствие!!!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 29.01.2016, 22:53   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Цитата:
Зачем мы слева пишем класс Сет, а справа класс ТриСет?
Потому что Сет - это, грубо говоря, интерфейс, а ТриСет - это конкретная реализация.
p51x вне форума Ответить с цитированием
Старый 30.01.2016, 01:50   #5
guroDragon
Пользователь
 
Регистрация: 09.09.2013
Сообщений: 83
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Ну если просто локальная переменная, то смысла может и не много.
А если например функция принимает Set, то ей можно передать и TreeSet, и какой-нибудь другой SomethingSet, а не только один TreeSet.
Ну вот если мы объявим сразу TreeSet, то у нас появляется доп. методы типа last, getMax. Почему их нет, когда мы напишем Сет, а уже потом присвоим какой-нибудь другой сет?
guroDragon вне форума Ответить с цитированием
Старый 30.01.2016, 02:07   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну потому и нет.

Если нужны, то значит именно TreeSet и нужно использовать, а не через этот интерфейс работать.

https://ru.wikipedia.org/wiki/%D0%9F...D0.B8.D1.8F.29
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 17.02.2016, 03:18   #7
New man
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 774
По умолчанию

Всё очень просто. В Java принято как можно сильнее абстрагироваться от того, с чем конкретно мы работаем. Это делается для того, чтобы максимально скрыть от нас реализацию и тем самым уберечь программиста от ошибок.

Это гораздо понятнее на примере python будет.
Есть там оператор
Код:
for x in set:
Вот для него абсолютно безразлично, что находится в set, главное, чтобы он был итерируемым. Это может быть кортеж, строка или список - неважно, главное, чтобы у него был итератор.
a.k.a. Angelicos Phosphoros
Мой сайт
New man вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
составить программу для нахождения наибольшего общего и наименьшего общего кратного двух натуральных чисел НОК(A,B)=A*B/НОД(A,B) sisaw Помощь студентам 0 06.05.2014 20:36
Ошибка чтения из файла в переменную типа integer Max1548 Общие вопросы Delphi 2 12.10.2011 12:34
Каким образом сохранить цвет. Типа в переменную типа TColor ? serres C++ Builder 5 07.12.2010 16:19
Инициализировать класс, например, для обработки событий с OLE CaptainNemo Microsoft Office Excel 1 15.06.2009 06:21
нахождение наибольшего общего делителя и наименьшего общего кратного made in russia Помощь студентам 2 21.12.2008 23:36