繁体   English   中英

在Set视图中遍历Hashmap

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM