java 的map1{1,张三
2,李四}
map2{id,1
name,张三}
{id,2
name,李四}
map1和map2是等效的吗,转成excel是下面这样的吗:
map1变成
1 2
张三 李四
map2变成
id name
1 张三
2 李四
java 的map1{1,张三
2,李四}
map2{id,1
name,张三}
{id,2
name,李四}
map1和map2是等效的吗,转成excel是下面这样的吗:
map1变成
1 2
张三 李四
map2变成
id name
1 张三
2 李四
引自免费微信小程序:皆我百晓生
在Java中,Map是一种接口,它定义了如何存储、获取键值对的数据结构。不同的类可以实现这个接口,例如HashMap、TreeMap等。在你的例子中,你提到的两个Map,虽然它们存储的信息相同,但它们的表示方式不同。
map1
是一个普通的键值对映射,其中键是整数,值是字符串:
Map<Integer, String> map1 = new HashMap<>();
map1.put(1, "张三");
map1.put(2, "李四");
当你将这个映射转换为Excel时,确实可以像这样展示:
A B
1 1 张三
2 2 李四
这里A列代表键(索引),B列代表对应的值。
而 map2
实际上看起来更像是一个二维映射,其中每个键对应一对键值对,这可能不是一个标准的Map用法,因为它通常用于一对一的关系。不过,我们可以将其理解为一种特殊的映射结构:
Map<String, Map<String, String>> map2 = new HashMap<>();
Map<String, String> innerMap1 = new HashMap<>();
innerMap1.put("id", "1");
innerMap1.put("name", "张三");
Map<String, String> innerMap2 = new HashMap<>();
innerMap2.put("id", "2");
innerMap2.put("name", "李四");
map2.put("1", innerMap1);
map2.put("2", innerMap2);
当我们将 map2
转换为Excel时,会得到类似这样的表格:
A B C
1 id name
2 1 张三
3 2 李四
这里A列和B列分别代表内嵌Map中的键和值。然而,这种表示方式并不常见,因为通常我们不会在一个Map中存储另一个Map,除非有特殊的需求。
如果你想要从 map2
中提取出类似于 map1
的结构,你可以这样做:
Map<Integer, String> simplifiedMap = new HashMap<>();
for (Map.Entry<String, Map<String, String>> entry : map2.entrySet()) {
int keyAsInt = Integer.parseInt(entry.getKey());
simplifiedMap.put(keyAsInt, entry.getValue().get("name"));
}
这样你就得到了一个与 map1
等效的Map。