Moje rozumienie Multiset to zestaw z częstotliwością, ale zawsze mogę użyć mapy do przedstawienia częstotliwości, czy istnieje inny powód, aby używać Multiset?Guava MultiSet vs mapa?
17
A
Odpowiedz
31
Zalety Multiset<E>
ponad Map<E, Integer>
:
- No specjalny kod wymagany podczas dodawania elementu, który nie jest już w kolekcji.
- Metody obchodzenia się liczbę elementów bezpośrednio:
count(E)
,add(E, int)
itp - zamiarem kodu jest wyraźniejszy. A
Multiset<E>
oczywiście odwzorowuje elementy na ich liczby. AMap<E, Integer>
może odwzorować elementy na dowolne liczby całkowite.
Zobacz także:
8
Dla mnie najważniejszy punkt, który wyznacza Multiset
oprócz Map
jest to, że jest to Collection
: wystarczy umieścić rzeczy w nim i możesz liczyć później. Konceptualnie pasuje do przypadków użycia, dla których jest zaprojektowany, gdzie nie ma Map
. W takich przypadkach, Map
jest po prostu hackem, który kinda-sorta działa poprawnie, ponieważ Java nie zapewnia niczego bardziej odpowiedniego.
Oprócz tego, że Multiset jest prawdopodobnie bardziej wydajny niż twoje wdrożenie, sprawia, że staje się on bardziej przejrzysty i trudniej jest go zepsuć. Zazwyczaj z mapą masz do czynienia z wieloma rzeczami: sprawdzenie, czy klucz jest już na mapie, zajmowanie się zerem i wszystkimi trudnymi sprawami. Multiset po prostu działa. –