![](/img/trans.png)
[英]Iterating over a HashMap, two ways: iterating with entry set & iterating with enumeration
[英]Iterating over the Hashmap in Set views
有一个Map,其中包含与m个键相关联的n个值。 我正在从WebElements获取键和关联的值。 至今;
键:[1、2、3]
值:[A,B,C,D,E,F,G]
但是问题是;
键[1]:值[A,B,C]
键[2]:值[C,D,E]
键[3]:值[F,G,H]
因此,单个键与值的数量相关联。 请参见以下示例。
<tr key="key1" >
<td x=""value1">
<td y=""value2">
<td z=""value3">
</tr>
<tr key="key2" >
<td x="a">
<td y="b">
<td z="c">
</tr>
如何设计哈希图,它将在集合视图中查看与特定键关联的值。 例如:键[1]:值[A,B,C]
键[2]:值[C,D,E]
键[3]:值[F,G,H]
预先感谢您的输入。
如下定义Map
:
Map<String, String[]> tds = new HashMap<String,String[]>();
这样,对于每个键,您都可以拥有一个值数组。
如果我了解您的问题,那么您可以
Map<String, List<String>> map = new HashMap<String, List<String>>();
// Or use 'Set' in place of 'List' if values are unique for a given key.
// putting values in map
List<String> list = new ArrayList<String>();
list.add("key1 String1");
list.add("key1 String2");
list.add("key1 String3");
map.put("key1", list);
list = new ArrayList<String>();
list.add("key2 String1");
list.add("key2 String2");
list.add("key2 String3");
map.put("key2", list);
list = new ArrayList<String>();
list.add("key3 String1");
list.add("key3 String2");
list.add("key3 String3");
map.put("key3", list);
//adding another value for key1
list = map.get("key1");
list.add("key1 String4");
// fetching from map
// list = map.get("key1");
System.out.println(map.get("key1")); // prints : [key1 String1, key1 String2, key1 String3, key1 String4]
System.out.println(map.get("key2")); // prints : [key2 String1, key2 String2, key2 String3]
System.out.println(map.get("key3")); // prints : [key3 String1, key3 String2, key3 String3]
注意: HashMap将不维护键的顺序。
如果可以使用外部库,则可以使用Guava的Multimap
进行此操作。 如果要保留迭代顺序,并且没有重复项可以显示为值(针对给定键),则使用LinkedHashMultimap
应该可以:
Multimap<String, String> multimap = LinkedHashMultimap.create();
multimap.putAll("1", Arrays.asList("A", "B", "C"));
multimap.putAll("2", Arrays.asList("C", "D", "E"));
multimap.putAll("3", Arrays.asList("F", "G", "H"));
用这个测试
System.out.println(multimap);
产量
{1=[A, B, C], 2=[C, D, E], 3=[F, G, H]}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.