将entrySet转换为数组

Ale*_*ien 1 java arrays generics collections map

我想转换entrySet()Map<String, Statistic>一个array(或ArrayList中).

我试过了:

Map.Entry<String, Statistic>[] entries = statisticMap.entrySet().toArray(new Map.Entry<String, Statistic>[0]);
Run Code Online (Sandbox Code Playgroud)

但这会给编译器错误:"无法创建Map.Entry的通用数组"

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

Map.Entry<String, Statistic>[] entries = new Map.Entry<String, Statistic>[1];
Run Code Online (Sandbox Code Playgroud)

但这有效:

Map.Entry[] entries = new Map.Entry[1];
Run Code Online (Sandbox Code Playgroud)

任何想法如何创建这样的数组或列表?

Stu*_*rks 5

如果您愿意获取列表而不是数组,则可以执行以下操作:

List<Map.Entry<String, Statistic>> list = new ArrayList<>(map.entrySet());
Run Code Online (Sandbox Code Playgroud)

使用列表可以避免创建泛型数组的问题,并且它还允许您使用Java 7的"菱形运算符"来避免重复类型参数.