java中的MultiValueMap

时间:2015-06-08 08:39:44

标签: java collections hashmap

我正在研究带有多个参数的Hashmap(1个键,2个值) 我能够为我的问题找到apache multiValueMap。

这是我的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]

这是我的问题 如何存储字符串b的第一个值,第二个存储c? 如果我将MultiMap值的子字符串依赖于“,”那么它只存储Hello。 请给我你的建议。

4 个答案:

答案 0 :(得分:8)

您可以尝试以下操作:

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);
} 

答案 1 :(得分:1)

您无需进行拆分。这是找到的MultiMap文档:

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

现在,当您对多地图进行get()调用时,它会为您提供一个集合。第一项是你的b,第二项是你的c。

答案 2 :(得分:0)

您还可以使用键和对象在Multimap中存储多个值。 像这样 MultiValueMap mv = new LinkedMultiValueMap <〜>();

答案 3 :(得分:0)

@ user3810857您必须使用从数据库中检索到的3个字段(数据编号(整数),通道ID(整数),描述(字符串))制作包装器,然后可以根据需要制作正态或多值映射将包装器作为您的价值。