Java i praktyczne zastosowanie kolekcji

0

Witam, uczę się o kolekcjach w javie, ale w każdym tutorialu tak jakby chcieli ominąć ten temat, pisząc, że teraz mi to nie jest potrzebne, albo, że w tym momencie nie będą się skupiać nad takimi szczegółami. Mianowicie, kiedy i gdzie się w praktyce używa ArrayList, LinkedList, Vector, HashMap, TreeMap, TreeSet, etc. Mile widziany dobry tutorial, :)

Edit:
Chodzi także, o wiedzę taką jak, która jest szybka w odczycie i dodawaniu elementów, etc.

1

Kiedy i gdzie? Wszędzie i zawsze kiedy masz więcej niż 1 obiekt.
Wiedzę o złożoności obliczeniowej wyczytasz z dokumentacji.

Wyobraź sobie ze wchodzisz na forum o motoryzacji i piszesz:

Witam, uczę się o samochodach osobowych, ale w każdej książce tak jakby chcieli ominąć ten temat, pisząc, że teraz mi to nie jest potrzebne, albo, że w tym momencie nie będą się skupiać nad takimi szczegółami. Mianowicie, kiedy i gdzie się w praktyce używa bagażnika, przyczepy, uchwytów na narty, bagażnika na rowery, etc. Mile widziany dobry tutorial,

Edit:
Chodzi także, o wiedzę taką jak, która nadaje się do przewożenia jakich przedmiotów, jaką ma pojemność etc

0
Shalom napisał(a):

Kiedy i gdzie? Wszędzie i zawsze kiedy masz więcej niż 1 obiekt.
Wiedzę o złożoności obliczeniowej wyczytasz z dokumentacji.

Gdyby tylko chodziło o przechowywanie pewnej ilości obiektów to wystarczyła by tylko arraylista. A przydałby mi się tutorial gdzie w jednym miejscu napisane jest coś o zastosowaniu poszczególnych kolekcji/map

1

Każda kolekcja ma złożoność pamięciową (zależność między ilością elementów a zajmowaną pamięcią) i złożoność obliczeniową poszczególnych operacji (zależność między ilością elementów a czasem wykonania operacji np. dodania, znalezienia, usunięcia itd.) Wszystkie te złożoności masz podane w dokumentacji i w zależności od przypadku użycia i tego na czym Ci zależy (czy małym zużyciu, czy szybkim dodawaniu lub wyszukiwaniu) używasz odpowiedniej. Poza tym, jest jeszcze parę innych czynników determinujących wybór np. czy ma być posortowana czy w dowolnej kolejności. Ponadto są kolekcje, które działają szybko, gdy się je raz utworzy i nie zmienia zawartości np. ArrayList, ale gdy często dodajesz i usuwasz to lepszym wyborem będzie LinkedList (ale tu z kolei wyszukiwanie po indeksie jest powolne).

Polecam poczytać o złożoności obliczeniowej, strukturach danych i dokumentację Java Collections Framework.

0

Edit: @up no porównanie nietrafione, porównaniem raczej bym celował w konta bankowe, każde jest do przechowywania pieniędzy, ale nie wszystkie konta mają takie same funkcje i nie są opłacalne w pewnych sytuacjach.

0

Jak nie chce to niech nie używa :)

https://docs.oracle.com/javase/tutorial/collections/

2

Ja tam zawsze używam tablic, po co Wam te kolekcje...

0

ok wyobraz sobie ze piszesz ksiazke telefoniczna.

Kazda osoba ma przypisany numer tefelonu.

Numer telefonu nie pasuje do klasy Osoba (bo osoba nie musi miec numeru telefonu)

Jak to rozwiazesz za pomoca arraylist?

0
fasadin napisał(a):

ok wyobraz sobie ze piszesz ksiazke telefoniczna.

Kazda osoba ma przypisany numer tefelonu.

Numer telefonu nie pasuje do klasy Osoba (bo osoba nie musi miec numeru telefonu)

Jak to rozwiazesz za pomoca arraylist?

No jak ? masz stringa osoba::numer i robisz split po "::"

0

Na tym forum szansa aby dostać jakąś sensowną odpowiedź to jak wygrana w totolotka. Będziecie wyskakiwać z linkami do wiki ;)
Przykład czego szukam:
http://stackoverflow.com/questions/1463284/hashset-vs-treeset

3

Jak napiszesz post jakościowo przypominający ten podlinkowany to dostaniesz jakościowo podobne odpowiedzi. Bo autor tam zadał sobie trud w przeczytaniu czegoś na temat kolekcji o które pyta i nie zadaje idiotycznego pytania z serii "jaką mają złożoność", bo odpowiedź można znaleźć w 5 sekund z google. On tam pyta konkretnie o dwa typy tej samej kolekcji i ich zastosowanie praktyczne.

Wracając do mojej analogii z samochodami, on tam spytał kiedy w praktyce lepiej dopiąć do samochodu przyczepę a kiedy bagażnik na dach. Widzisz różnicę między takim pytaniem a pytaniem "po co jest bagażnik" albo "jaką pojemność ma przyczepa X"?

1

Widocznie nie zrozumiałeś pytania zadanego wprost. Kiedy w praktyce się używa poszczególnych kolekcji(HashSet, TreeSet, LinkedHashSet, etc.), jakoś nie widzę w moim poście pytania po co są kolekcje. Twoja analogia jest wprost proporcjonalna do twojego prawidłowego zrozumienia pytania ;). Spójrz na temat("praktyczne zastosowanie kolekcji) i na twoją ostatnią odpowiedź. Powiedz mi gdzie zapytałem po co jest jakaś kolekcja? Widać lubisz robić off-top, bo to już nie pierwszy temat na który bez sensu się wypowiadasz. Nie pozdrawiam.

0

"gdzie się w prakryce używa młotka, wkrętarki i łopaty, jakie są między nimi różnice"

0
spartanPAGE napisał(a):

"gdzie się w prakryce używa młotka, wkrętarki i łopaty, jakie są między nimi różnice"

A nie zadałem przypadkiem pytania gdzie używa się młotka stalowego, gumowego lub sędziowskiego?

1

Nie, bo jedyne co te kolekcje mają wspólnego to to że przechowują obiekty. Tak samo jak bagażniki że można coś do nich schować i jak narzędzia że można nimi coś zmajstrować.
Kolega w temacie ze stackoverflow zadał pytanie o różne rodzaje młotka. Ty nie. Ty zapytałeś o wszystkie narzędzia w garażu ;]

0

Nie wiem na jakim jesteś poziomie ale... Na początku kup sobie książkę o algorytmach np cormena lub wróblewskiego. Bo to od tego co chcesz uzyskać zależy co wybierzesz. Np. "Algorytm Huffmana na kopcu binarnym ma złożoność O(n lg n) a stosując drzewa van Emde Boasa zejdziesz do O( n lglgn )" cormen str 437 XD. Ew dowolna inna książka o tematyce algorytmy i struktury danych odpowie ci na twoje pytanie. A jak już będziesz znał różnicę, wtedy można rozmawiać o wydajności.

IMO jeśli chodzi o naukę samego języka to chyba oczywiste, że nie jest ci to teraz potrzebne, bo to są rzeczy nie powiązane z samą składnią, a ideą rozwiązania danego problemu.

0

Z tego co pamietam w thinking in java kolekcje byly dosyc lopatologicznie wytlumaczone - http://www.amazon.com/Thinking-Java-Edition-Bruce-Eckel/dp/0131872486

1 użytkowników online, w tym zalogowanych: 0, gości: 1