Różnice w deklaracji kolekcji.

Różnice w deklaracji kolekcji.
KO
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Olsztyn
  • Postów: 64
0

Witam. Mam takie pytanko odnośnie kolekcji. W sumie kilku, ale przedstawie na konkretnym przykładzie. Czym się różni taka deklaracja:

TreeSet<String> zbior = new TreeSet<>();

od takiej:

SortedSet<String> zbior = new TreeSet<>();

Obydwie na pierwszy rzut oka działają tak samo :)

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
1

Różni się tym że ta druga jest bardziej "ogólna". Tzn wyobraź sobie że napisałeś cały kod z użyciem TreeSet wszędzie a nagle postanawiasz że chcesz inny zbiór, bo TreeSet jest za wolny. I co? I masz problem bo musisz w całym kodzie zmienić ten set na inny.
A teraz wyobraź sobie że masz wszędzie SortedSet, czyli opierasz się tylko na tym że korzystasz z jakiegoś posortowanego zbioru. Możesz wtedy bezboleśnie podmienić ten set na inny, o ile też jest posortowany i kod nadal będzie działał.

KO
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Olsztyn
  • Postów: 64
0

Dobra chyba kumam.
Chodzi o to, że jeżeli używam SortedSet mam pewność, że używam metod które definiuje ten interfejs. Jeżeli zaś używam TreeSet mogę też bez problemu używać metod zawartych w tej klasie.
Problem zaczyna się gdy np. w kodzie używam w programie:
TreeSet<String> zbior = new TreeSet<>();
referencji do kolekcji "zbior" 100 razy lub więcej i korzystam z metod zdefiniowanych w klasie TreeSet. teraz gdybym chciał zamienić TreeSet na np. HashSet mam problem, ponieważ metody z TreeSet mogą nie pasować. Dobrze myślę?

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
1

Tak, własnie o to chodzi. Generalnie dobrą praktyką jest korzystać z najbardziej ogólnego interfejsu bo daje ci to najwięcej elastyczności.

KO
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Olsztyn
  • Postów: 64
0

Wielkie dzięki :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.