问题描述
我有一些包含此哈希图的代码(为了简化,我删除了除 5 个以外的所有对):
HashMap<String,Integer> partiesColors = new HashMap<String,Integer>();
{
partiesColors.put("None",color(0,0));
partiesColors.put("KPÖ",color(170,0));
partiesColors.put("PILZ",color(128,128,128));
partiesColors.put("Grüne",color(81,165,30));
partiesColors.put("SPÖ",color(227,30,45));
};
color[] colorsOnly = partiesColors.values().toArray(new color[partiesColors.size()]);
但是 Processing (3.5.4) IDE 拒绝接受这一点,并用 The function "toArray()" expects parameters like: "toArray(T[])"
红线了 toArray 部分,尽管拼写法与我在网上找到的几个资源相同。我该怎么做?
解决方法
您可以创建一个 ArrayList(ArrayList 比 Array 更灵活)。
ArrayList<Integer> colors = new ArrayList<>();
for(int i = 0; i<=4; i++){
colors.add(partiesColors.get(i))
}
添加 HashMap 的前 5 个值,它们链接到索引。
你也可以试试这个:
Object[] colorArray = partiesColors.entrySet().toArray();
,
color
是处理 IDE 为 int
提供的语法糖。
事实上,并没有真正的 color
类型或类;将脚本编译为 Java 时,预处理器会将 color
的所有用法转换为 int
。
因此您可以交替使用 int
和 color
,因此您的数组不必需要为 color
类型。
Integer[] colorsOnly = partiesColors.values().toArray(new Integer[partiesColors.size()]);
color col = colorsOnly[0];