我想将entrySet()的Map<String, Statistic>转换为array (或ArrayList)。
我试过:
Map.Entry<String, Statistic>[] entries = statisticMap.entrySet().toArray(new Map.Entry<String, Statistic>[0]);但这会导致编译器错误:“无法创建Map.Entry的泛型数组”。
即使这样也不起作用,但有相同的错误:
Map.Entry<String, Statistic>[] entries = new Map.Entry<String, Statistic>[1];但这样做是可行的:
Map.Entry[] entries = new Map.Entry[1];有什么想法如何创建这样的数组或列表吗?
发布于 2014-07-24 20:28:09
有什么想法如何创建这样的数组或列表吗?
你能做到的,尽管它很丑。
Map.Entry<String, Statistic>[] entries =
(Map.Entry<String, Statistic>[]) new Map.Entry[num];发布于 2014-07-27 03:32:06
如果您愿意得到一个列表而不是一个数组,您可以这样做:
List<Map.Entry<String, Statistic>> list = new ArrayList<>(map.entrySet());使用list可以避免创建泛型数组的问题,还可以使用Java 7的“菱形操作符”来避免重复类型参数。
发布于 2020-03-11 06:48:45
与C#相比,造成复杂的根本原因是Java设计中断,其中数组和List没有实现相同的接口。因此,任何解决方案都将是丑陋的(并且会导致性能损失)。
如果是丑陋的,我个人更喜欢明确的解决方案,至少你可以看到实际发生了什么。
因此,我的丑陋版本是:
Map.Entry<String, String>[] keys = new Map.Entry[map.entrySet().size()];
int index = 0;
for (Map.Entry<String, String> entry: map.entrySet()) {
keys[index] = entry;
index++;
}https://stackoverflow.com/questions/24943302
复制相似问题