首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将entrySet转换为数组

将entrySet转换为数组
EN

Stack Overflow用户
提问于 2014-07-24 20:25:15
回答 3查看 6.2K关注 0票数 3

我想将entrySet()Map<String, Statistic>转换为array (或ArrayList)。

我试过:

代码语言:javascript
复制
Map.Entry<String, Statistic>[] entries = statisticMap.entrySet().toArray(new Map.Entry<String, Statistic>[0]);

但这会导致编译器错误:“无法创建Map.Entry的泛型数组”。

即使这样也不起作用,但有相同的错误:

代码语言:javascript
复制
Map.Entry<String, Statistic>[] entries = new Map.Entry<String, Statistic>[1];

但这样做是可行的:

代码语言:javascript
复制
Map.Entry[] entries = new Map.Entry[1];

有什么想法如何创建这样的数组或列表吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-07-24 20:28:09

有什么想法如何创建这样的数组或列表吗?

你能做到的,尽管它很丑。

代码语言:javascript
复制
Map.Entry<String, Statistic>[] entries = 
                          (Map.Entry<String, Statistic>[]) new Map.Entry[num];
票数 4
EN

Stack Overflow用户

发布于 2014-07-27 03:32:06

如果您愿意得到一个列表而不是一个数组,您可以这样做:

代码语言:javascript
复制
List<Map.Entry<String, Statistic>> list = new ArrayList<>(map.entrySet());

使用list可以避免创建泛型数组的问题,还可以使用Java 7的“菱形操作符”来避免重复类型参数。

票数 5
EN

Stack Overflow用户

发布于 2020-03-11 06:48:45

与C#相比,造成复杂的根本原因是Java设计中断,其中数组和List没有实现相同的接口。因此,任何解决方案都将是丑陋的(并且会导致性能损失)。

如果是丑陋的,我个人更喜欢明确的解决方案,至少你可以看到实际发生了什么。

因此,我的丑陋版本是:

代码语言:javascript
复制
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++;
}
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24943302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档