打印 HashMap 的 HashMap :Map.Entry 或 java8
Printing HashMap of HashMaps : Map.Entry or java8
我有一个方法可以 returns 输出 hashmaps 的 hashmaps
HashMap<String, HashMap<String, String>> mapofmaps = abcd(<String>, <Integer>);
我正在尝试使用以下代码打印外部哈希图
for (Entry<String, HashMap<String, String>> entry : mapofmaps.entrySet()) {
String key = entry.getKey();
System.out.println(key);
HashMap<String, String> value = entry.getValue();
System.out.println(key + "\t" + value);
}
我想遍历内部地图。那里的 entryset 变量是什么(???在代码中)。
for (Entry<String, HashMap<String, String>> entry : mapofmaps.entrySet()) {
String key = entry.getKey();
System.out.println(key);
for(Entry<String, HashMap<String, String>> entry : ????.entrySet()){
HashMap<String, String> value = entry.getValue();
System.out.println(key + "\t" + value);
}}
我打印哈希图的逻辑正确吗?或者有更好的方法吗?
会是entry.getValue().entrySet()
所以
for(Entry<String, String> innerEntry : entry.getValue().entrySet()){
那么你可以使用
String key = innerEntry.getKey();
String value = innerEntry.getValue();
值得一提的是,这也可以使用 java 8 Streams 和 lambda 表达式来完成
HashMap<String, HashMap<String, String>> mapofmaps = new HashMap<>();
HashMap<String,String> map1 = new HashMap<>();
map1.put("map1_key1", "map1_value1");
HashMap<String,String> map2 = new HashMap<>();
map2.put("map2_key1", "map2_value1");
mapofmaps.put("map1", map1);
mapofmaps.put("map2", map2);
// To print the keys and values
mapofmaps.forEach((K,V)->{ // mapofmaps entries
V.forEach((X,Y)->{ // inner Hashmap enteries
System.out.println(X+" "+Y); // print key and value of inner Hashmap
});
});
mapofmaps.forEach((K,V)
: 这需要一个接受两个输入的 lambda 表达式,即 Key (String) 和 Value (HashMap)
V.forEach((X,Y)->{
: 由于这是应用于内部(V
:通过先前的 foreach 获取)hashmap,因此 Key 和 Value 都是字符串
进一步阅读参考:
带有数据的简单示例
Map<String, Integer> map = new HashMap<>();
map.put("Apple", 10);
map.put("Motorolla", 20);
map.put("RealMe", 30);
map.put("Oppo", 40);
map.put("Sony", 50);
map.put("OnePlus", 60);
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + ", Stock : " + entry.getValue());
}
使用 lambda 表达式
map.forEach((K,V) -> System.out.println(K + ", Stock : " + V));
我有一个方法可以 returns 输出 hashmaps 的 hashmaps
HashMap<String, HashMap<String, String>> mapofmaps = abcd(<String>, <Integer>);
我正在尝试使用以下代码打印外部哈希图
for (Entry<String, HashMap<String, String>> entry : mapofmaps.entrySet()) {
String key = entry.getKey();
System.out.println(key);
HashMap<String, String> value = entry.getValue();
System.out.println(key + "\t" + value);
}
我想遍历内部地图。那里的 entryset 变量是什么(???在代码中)。
for (Entry<String, HashMap<String, String>> entry : mapofmaps.entrySet()) {
String key = entry.getKey();
System.out.println(key);
for(Entry<String, HashMap<String, String>> entry : ????.entrySet()){
HashMap<String, String> value = entry.getValue();
System.out.println(key + "\t" + value);
}}
我打印哈希图的逻辑正确吗?或者有更好的方法吗?
会是entry.getValue().entrySet()
所以
for(Entry<String, String> innerEntry : entry.getValue().entrySet()){
那么你可以使用
String key = innerEntry.getKey();
String value = innerEntry.getValue();
值得一提的是,这也可以使用 java 8 Streams 和 lambda 表达式来完成
HashMap<String, HashMap<String, String>> mapofmaps = new HashMap<>();
HashMap<String,String> map1 = new HashMap<>();
map1.put("map1_key1", "map1_value1");
HashMap<String,String> map2 = new HashMap<>();
map2.put("map2_key1", "map2_value1");
mapofmaps.put("map1", map1);
mapofmaps.put("map2", map2);
// To print the keys and values
mapofmaps.forEach((K,V)->{ // mapofmaps entries
V.forEach((X,Y)->{ // inner Hashmap enteries
System.out.println(X+" "+Y); // print key and value of inner Hashmap
});
});
mapofmaps.forEach((K,V)
: 这需要一个接受两个输入的 lambda 表达式,即 Key (String) 和 Value (HashMap)
V.forEach((X,Y)->{
: 由于这是应用于内部(V
:通过先前的 foreach 获取)hashmap,因此 Key 和 Value 都是字符串
进一步阅读参考:
带有数据的简单示例
Map<String, Integer> map = new HashMap<>();
map.put("Apple", 10);
map.put("Motorolla", 20);
map.put("RealMe", 30);
map.put("Oppo", 40);
map.put("Sony", 50);
map.put("OnePlus", 60);
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + ", Stock : " + entry.getValue());
}
使用 lambda 表达式
map.forEach((K,V) -> System.out.println(K + ", Stock : " + V));