2015-06-08 4 views
5

Sto studiando con Hashmap con parametri multipli (1 tasto, 2 valori) e sono stato in grado di trovare apache multiValueMap per il mio problema.MultiValueMap in java

Ecco i miei codici per multiValueMap.

import java.util.Set; 
import org.apache.commons.collections.map.MultiValueMap; 
import org.apache.commons.collections.MultiMap; 

public class multiValueMap { 

public static void main(String args[]) { 
    String a, b, c; 
    MultiMap mMap = new MultiValueMap(); 

    mMap.put("a", "Hello there, It's a wonderful day"); 
    mMap.put("a", "nice to meet you"); 

    Set<String> keys = mMap.keySet(); 

    for (String key : keys) { 
     System.out.println("Key = " + key); 
     System.out.println("Values = " + mMap.get(key)); 
     a = String.valueOf(mMap.get(key)); 

     System.out.println("A : " + a); 
    } 
} 
} 
// The result as below 
Key = a 
Value = [Hello there, It's a wonderful day, nice to meet you] 
A : [Hello there, It's a wonderful day, nice to meet you] 

Ecco la mia domanda come posso memorizzare primo valore per la stringa B, e la seconda per c? se sottostringa i valori di MultiMap dipende da "," quindi memorizzerebbe Hello solo lì. ti prego di darmi utili i tuoi consigli.

+0

non vogliono essere quel ragazzo, ma: perché non si basta memorizzare un elenco in una mappa? –

+0

@PieterDeBie Questo è ciò che il comune 'MultiValueMap' fa sotto il cofano – blgt

risposta

4

Si può provare seguenti:

String a, b, c; 

MultiMap mMap = new MultiValueMap(); 
mMap.put("a", "Hello there, It's a wonderful day"); 
mMap.put("a", "nice to meet you"); 

Set<String> keys = mMap.keySet(); 

for (String key : keys) { 
    System.out.println("Key = " + key); 
    System.out.println("Values = " + mMap.get(key)); 
    List<String> list = (List<String>) mMap.get(key); 

    b = list.get(0); 
    c = list.get(1); 
    System.out.println("B : " + b); 
    System.out.println("C : " + c); 
} 
+0

Sembra che abbia bisogno di maggiori dettagli. in realtà, voglio memorizzare numerosi dati (più di 1000) da DB e copre 3 parametri (dati no (int), id canale (int), descrizione (stringa)). ma se li immagazzino su Hashmap (Key, Value) Non è sufficiente per 3 parametri, quindi ho deciso di usare MultiValueMap. 2 risposte sopra non risolvono completamente il mio problema. – user3810857

1

Non è necessario eseguire uno split. Questa è la documentazione di MultiMap che si trova:

MultiMap mhm = new MultiHashMap(); 
mhm.put(key, "A"); 
mhm.put(key, "B"); 
mhm.put(key, "C"); 
Collection coll = (Collection) mhm.get(key); 

Ora, quando si fa una chiamata get() su un multimap, ti dà una collezione. Il primo oggetto sarà il tuo b e il secondo sarà il tuo c.