2015-06-08 14 views
5

Birden çok parametre ile Hashmap ile çalışıyorum (1 anahtar, 2 değer) ve benim sorunum için apache multiValueMap bulabildim.java'da MultiValueMap

İşte multiValueMap kodlarım. İşte

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] 

Ben dize b ilk değer depolamak ve c ikinci nasıl benim sorum nedir? Eğer MultiMap değerlerinin alt dizilimini "," ye bağlıyorsam, o zaman sadece oraya Merhaba. lütfen tavsiyelerinize yardımcı olun.

+0

o adam olmak istiyorum ama etmeyin: neden sadece bir harita bir listesi saklamak olmaz? –

+0

@PieterDeBie "MultiValueMap" ın kapsayıcıları – blgt

cevap

4

Aşağıdaki deneyebilirsiniz:

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

kapağının altında yer alıyor. Daha fazla ayrıntıya ihtiyaç duyuyor gibi görünüyor. Aslında, DB'den çok sayıda veri (1000'den fazla) depolamak istiyorum ve 3 parametreyi (veri no (int), kanal kimliği (int), açıklama (String)) kapsar. Ancak bunları Hashmap (Anahtar, Değer) olarak kaydedersem 3 parametre için yeterli olmaz, dolayısıyla MultiValueMap'i kullanmaya karar verdim. Yukarıdaki 2 cevap sorunumu tamamen çözmüyor. – user3810857

1

Bölme yapmak zorunda değilsiniz. Eğer bir Multimap'de bir get() çağrı yaptığınızda

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

Şimdi, size bir koleksiyon verir: Bu bulunursa MultiMAp'inin belgelerdir. İlk öğe b'niz olacak ve ikincisi sizin olacak.