处理:函数“toArray()”需要这样的参数:“toArray(T[])”

问题描述

我有一些包含此哈希图的代码(为了简化,我删除了除 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

因此您可以交替使用 intcolor,因此您的数组不必需要color 类型。

Integer[] colorsOnly = partiesColors.values().toArray(new Integer[partiesColors.size()]);
color col = colorsOnly[0];