2017-01-11 2 views
0

Je veux vérifier si l'élément "Item Two" est dans les valeurs de MultiMap get index de cet élément, ci-dessous est mon code.Comment obtenir l'index d'un élément dans la valeur de MultiMap

import java.util.ArrayList; 
import java.util.List; 
import java.util.Set; 

import org.apache.commons.collections.MultiMap; 
import org.apache.commons.collections.map.MultiValueMap; 

public class Test { 
    public static void main(String args[]) { 
     MultiMap mhm = new MultiValueMap(); 
     String key =""; 
     key = "Group One"; 
     mhm.put(key, "Item One"); 
     mhm.put(key, "Item Two"); 
     mhm.put(key, "Item Three"); 

     key = "Group Two"; 
     mhm.put(key, "Item Four"); 
     mhm.put(key, "Item Five"); 

     Set keys = mhm.keySet(); 
     for (Object k : keys) { 
      System.out.println("+k+“ : "+mhm.get(k)+")"); 
      List benefit = new ArrayList(); 
      benefit.add(mhm.get(k)); 
      System.out.println("+value at is+“ : "+benefit.contains("Item One")+")"); 
     } 
    }  
} 

et la sortie est:

mhm-keys : [Item One, Item Two, Item Three] 
value at is : false 
mhm-keys : [Item Four, Item Five] 
value at is : false 

Pourriez-vous s'il vous plaît aider comme je ne peux pas utiliser autre chose que Multimap

+2

Voir 'Map.containsValue (Object) ' – Aaron

+0

Aaron, pourriez-vous élaborer s'il vous plaît, je n'ai pas où utiliser la carte – black

+0

MultiMap étend la carte, de sorte que vous pouvez utiliser' mhm.containsValue (Object) ' – Aaron

Répondre

1

D'abord, MultiValueMap est dépréciée, vous devez utiliser MultiValuedMap à la place. https://commons.apache.org/proper/commons-collections/apidocs/org/apache/commons/collections4/MultiValuedMap.html

MultiValuedMap<String, String> mhm = new ArrayListValuedHashMap<String, String>(); 

Mais si vous voulez utiliser le MultiValueMap dépréciée, c'est bien pour moi. Pour les deux, vous pouvez utiliser les éléments suivants:

mhm.containsValue(value); 

vous pouvez également utiliser:

List<String> itemsWithKey = mhm.get(key); 
System.out.println(itemsWithKey.contains(value)); 

Mise à jour: Cela fonctionne pour moi:

MultiMap mhm = new MultiValueMap(); 
String key =""; 
key = "Group One"; 
mhm.put(key, "Item One"); 
mhm.put(key, "Item Two"); 
mhm.put(key, "Item Three"); 

key = "Group Two"; 
mhm.put(key, "Item Four"); 
mhm.put(key, "Item Five"); 

System.out.println(mhm.containsValue("Item One")); 
System.out.println(mhm.containsValue("Item Nine")); 

Ce retourne:

true 
false 

Update 2 Ce contrôle "Point Quatre" dans toutes les clés et retourner true/false pour chaque clé

MultiMap mhm = new MultiValueMap(); 
String key =""; 
key = "Group One"; 
mhm.put(key, "Item One"); 
mhm.put(key, "Item Two"); 
mhm.put(key, "Item Three"); 

key = "Group Two"; 
mhm.put(key, "Item Four"); 
mhm.put(key, "Item Five"); 


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

String itemToLookFor = "Item Four"; 

for(String k : keys) { 
    List<String> itemsWithKey = (List<String>) mhm.get(k); 
    boolean doesExists = itemsWithKey.contains(itemToLookFor); 
    System.out.println("does " + itemToLookFor + " exists for key " + k + ": " +doesExists); 
} 

Le résultat est:

does Item Four exists for key Group One: false 
does Item Four exists for key Group Two: true 
+0

Cela n'a pas fonctionné, renvoyant false pour les valeurs correctes – black

+0

Cela fonctionne dans mon environ ment, j'utilise ce que j'ai dans ma réponse mise à jour – JavaBoy

+0

Ceci recherche dans toutes les valeurs et non pour l'ensemble de valeurs particulier pour cette clé. Je veux vérifier "Item One" dans toutes les clés et retourner vrai/faux pour chacun – black