lista czy hasmapa w prog wielowatkowym?

0

Tak jak w temacie. Czego jest lepiej uzyc przy pisaniu kagiego programu jak czat czy gg Listy czy Hasmapy.
Jedno zajmuje mniej miejsca drugie jest szybsze i z tego co czytalem to oba da sie synchronizowac.
Interesuja mnie wasze opinie czyli osob ktore pewnie znaja sie lepiej na rzeczy i maja wieksze doswiadczenie ode mnie.

Z Gory dzieki za wsszystkie odpowiedzi.

0

Zamiast zwykłej HashMapy, Listy itp. użyj ConcurrentHashMap, ConcurretList lub czegoś z tej serii.

A w sumie w czym problem w samym wyborze zbioru czy też w wielowątkowości ?

0

po prostu jest to pierwszy raz jak bede pisal komunikator i nie wiem czego konkretnie sie uzywa przy pisaniu takich programow.
nie chodzi mi tylko o to zeby dzialalo ale zeby to co robie bylo dobre dlatego wole zapytac kogos doswiadczonego, co bedzie lepsze przy tworzeniu komunikatora internetowego lista czy hashmapa?

0

lista:
+łatwo można przejść po wszystkich elementach
+można mieć jakiś porządek i dodawać element w określonym miejscu
--bardzo wolne wyszukiwanie konkretnego elementu

mapa:
++baaardzo szybkie wyszukiwanie po kluczu
+łatwiej się pisze kod do wyszukiwania(robi się get() i tyle)
-/+(zależy od sytuacji) nie ma duplikatów(z tym samym kluczem)
-nie ma porządku
-trochę więcej pamięci, ale różnica nie jest aż tak duża

Tak więc czego używać?
Odpowiedź jest prosta. Jeżeli często wyszukujemy elementu po kluczu to używamy mapy, a jak robimy coś dla wszystkich elementów to listy.
W większym programie należy używać obu tych struktur w zależności od sytuacji.
Istnieje też klasa LinkedHashMap, która łączy zalety listy(porządek, łatwe przechodzenie po wszystkich) oraz mapy(szybkie i proste wyszukiwanie). Zużywa jednak trochę więcej pamięci niż mapa oraz niektóre operacje są nieznacznie droższe.

Acha, jeszcze jedna uwaga.
Są dwa rodzaje listy:
LinkedList-normalna lista
ArrayList-działa jak Vector z C++, wstawianie w środek jest kosztowne, odwołanie do n-tego elementu szybkie

0

Wiec z tego co napisales wynika, ze przy pisaniu komunikatora do przechowywania listy watkow podlaczonych uzytkownikow nalezy uzyc HashMapy poniwaz zachodzi czeste wyszukiwanie konkretnego uzytkownika aby przeslac mu wiadomosc?

0

Nie sądzę, żeby użycie listy zauważalnie spowolniło działanie tej aplikacji no chyba, że będziesz obsługiwał z milion użytkowników na raz - tyle, że wtedy masz masę innych problemów do przeanalizowania.

Raczej skup się na tym, które API bardziej Ci się przyda i z jakich metod chcesz korzystać w związku z modelem logicznym programu i wybierz kolekcją bazując na tym kryterium.

Pozdrawiam,

0
markq napisał(a)

Wiec z tego co napisales wynika, ze przy pisaniu komunikatora do przechowywania listy watkow podlaczonych uzytkownikow nalezy uzyc HashMapy poniwaz zachodzi czeste wyszukiwanie konkretnego uzytkownika aby przeslac mu wiadomosc?

Jeżeli masz jakiś unikalny identyfikator użytkownika(a pewnie taki masz) to mapa będzie najlepsza.

Tak jak napisał gzrewal tu nawet nie chodzi o wydajność, ale o API danej struktury i prostotę aplikacji.

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