gpt4 book ai didi

java - 如何在 Java 中将 Map> 转换为 Map

转载 作者:行者123 更新时间:2023-11-29 05:00:47 26 4
gpt4 key购买 nike

我正在获取 Map<String, Set<String>> 形式的数据从一个方法。但我希望它采用 Map<String, String[]> 的形式.

即,我只想转换来自 Set<String> 的 map 值至 String[]特定键的数组。

我试过这种方式,迭代加载的集合映射并为一个键正确获取 String[] 值数组。

但我只想知道,有没有比这更好的解决方案。

Map<String, Set<String>> testmap = new HashMap<String, Set<String>>();
Map<String, String[]> testmapArray = new HashMap<String, String[]>();
Set<String> testSet = new TreeSet<String>();
testSet.add("1");
testSet.add("2");
testSet.add("3");

testmap.put("A", testSet);
testmapArray.put("A", testSet.toArray(new String[testSet.size()]));

Set<String> testSet1 = new TreeSet<String>();
testSet1.add("4");
testSet1.add("5");
testSet1.add("6");

testmap.put("B", testSet1);
testmapArray.put("A", testSet1.toArray(new String[testSet1.size()]));

System.out.println(testmap);

Iterator it = testmap.entrySet().iterator();
while (it.hasNext()) {
Map.Entry pair = (Map.Entry)it.next();
testmapArray.put(pair.getKey().toString(), testmap.get(pair.getKey()).toArray(new String[testmap.get(pair.getKey()).size()]));
}
System.out.println(testmapArray);

谁能帮帮我?

最佳答案

您的解决方案即将奏效,因此您应该只考虑几件事情:

  1. Iterator 是通用类型,因此您不应该进行额外的转换
  2. 显式使用 Iterator 没有意义:for 循环对每个 Iterable(Collection -> Set 是)
  3. 您在 Map.Entry 中只使用了 key,但是您也可以使用 value,不需要调用 get 两个额外的次

因此,转换为:

for (Map.Entry<String, Set<String>> entry: testmap.entrySet()) {
testmapArray.put(entry.getKey(),
entry.getValue().toArray(new String[entry.getValue().size()]));
}

关于java - 如何在 Java 中将 Map<String, Set<String>> 转换为 Map<String, String[]>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32178365/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com