【问题标题】:Processing: The function "toArray()" expects parameters like: "toArray(T[])"处理:函数“toArray()”需要如下参数:“toArray(T[])”
【发布时间】:2021-05-31 12:11:39
【问题描述】:

我有一些包含这个哈希图的代码(为了简化,我删除了除了 5 个之外的所有对):

HashMap<String, Integer> partiesColors = new HashMap<String, Integer>();
{
  partiesColors.put("None", color(0, 0, 0, 0));
  partiesColors.put("KPÖ", color(170, 0, 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 部分添加红线,尽管正字法与我在网上找到的几个资源相同。我该怎么做?

【问题讨论】:

  • 哈希图的值是整数而不是颜色
  • @m0skit0 将“color”替换为“Integer”可以消除错误,但是如何获取颜色数组而不是整数数组?
  • 如何将颜色放入哈希图中的代码不会给您错误?看来这不是您正在使用的实际代码;你能发布实际的代码吗?
  • @m0skit0 除了在 hashmap 中间删除了几行之外,这是我正在使用的代码(虽然它不在主文件中,而转换器在 void setup()主文件)
  • 不可能,因为 Map 被声明为 Map&lt;String, Integer&gt; 并且您将 color 放入其中。你能发布color类定义吗?

标签: java processing


【解决方案1】:

您可以创建一个 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();

【讨论】:

  • 我的意思是一个适合一行的解决方案(比如我到处都能找到但对我不起作用的 .values().toArray() 示例),而不是需要循环遍历所有值
  • .entryset() 的第二种方法有效吗?
  • 它有效,但我正在尝试获取颜色数组(不是通用对象数组)
【解决方案2】:

color 是处理 IDE 提供的int语法糖

其实没有真正的color类型或类;当脚本编译为 Java 时,预处理器会将所有使用的 color 转换为 int

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

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

【讨论】:

    猜你喜欢
    • 2015-04-08
    • 1970-01-01
    • 1970-01-01
    • 2019-02-01
    • 2021-12-26
    • 1970-01-01
    • 2011-05-19
    • 2016-07-16
    • 2021-09-30
    相关资源
    最近更新 更多