2011-08-05 11 views
8

Chcę utworzyć następujące typy obiektów. Jest to moje pragnienie wyższego poziomu, które chciałbym wymyślić w Javie:Java - tworzenie obiektów z parami klucz/wartość?

ListObject (klucz, ciąg): każdy klucz odpowiada wartości ciągu; klucz jest ciągiem sam w sobie

ListObject (klucz, String []): każdy klucz odpowiada tablicy Ciągów; klucz jest ciągiem sam w sobie

ListObject (klucz, ciąg, ciąg []): ten sam układ, ale z dwoma polami wartości na klucz.

Jak utworzyć (i użyć!) Obiektów tego typu?

Dzięki.

+9

Nazywa się "Mapą" –

Odpowiedz

16

Wygląda na to, że potrzebujecie Państwo raczej Map s niż List s. Sprawdź the Javadoc dla implementacji Map; najczęściej jest to HashMap, ale istnieją również sortowane, współbieżne, deterministycznie iterowalne implementacje itp.

ListObject: każdy klucz odpowiada wartości typu String; Klucz jest ciągiem sama

Map<String, String> 

ListObject: co najważniejsze odpowiada tablicy ciągów; Klucz jest ciągiem sama

Map<String, String[]> 

(lub najlepiej Map<String, List<String>>)

ListObject: sama sprawa, ale z dwóch pól wartość na klucz.

Map<String, UserDefinedClassWithTwoFields> 
4

Map<KeyType,ValueType> która jest implementowana przez HashMap<KeyType, ValueType> i TreeMap<KeyType, ValueType>, między innymi - HashMap jest nieuporządkowany, a MapMap jest zamawiany.

Inne użyteczne Mapy są LinkedHashMap który jest jak HashMap ale iteruje w celu wkładania i com.google.common.collect.Maps w Guava który ma kilka metod użytkowych i com.google.common.collect.ImmutableMap która jest niezmienna realizacja map.

Dla klucza odpowiadającego tablicy łańcuchów, możesz spojrzeć na Multimap, która jest mapą z wieloma wartościami dla danego klucza.

1

Mapy są wykorzystywane do tworzenia tablic asocjacyjnych w języku Java.

Mapa na pierwszy przykład. Każdy klucz String jest powiązany z wartością String.

Mapa na drugi przykład. Wartości są tablicami ciągu.

Dla Twojego ostatniego przykładu, musisz utworzyć własną klasę z dwoma polami: jednym a String i jednym String []. Następnie utwórz mapę, która wiąże Ciąg do obiektu twojego typu.

0

Typ Java najprawdopodobniej zrobiłby lewę. A przechowuje pary klucz-wartość, więc będziesz mieć Map<String, String>, Map<String, List<String>> i Map<String, SomePairType>.

Map to tylko interfejs: musisz wybrać implementację. HashMap i TreeMap są twoimi najlepszymi zakładami. Oba są dobre, ale TreeMap będzie działać tylko z porównywalnymi typami kluczy. W przypadku kluczy, ponieważ String jest porównywalny z innymi ciągami znaków, można użyć dowolnej implementacji mapy.

2

Można użyć mapy do tego celu. Ogólna składnia na mapie jest:

Map<String, SomeObject> = new HashMap<String, SomeObject>(); 

Obecnie istnieją cztery rodzaje map w Java:

MAP HASH - Za pomocą tej mapy, jeśli nie dbają o porządek, w którym elementy są wyświetlane podczas iteracji nad mapą.

HASH TABLE - Zsynchronizowana wersja mapy skrótów.

LINKED HASH MAPA - Skorzystaj z tego, gdy dbasz o zamówienie reklamowe.

MAPA DRZEWA - Użyj tej opcji, jeśli chcesz dostosować kolejność sortowania.