【问题标题】:Extracting the Integer values of a HashMap to an Integer array [duplicate]将 HashMap 的整数值提取到整数数组 [重复]
【发布时间】:2022-01-22 13:35:32
【问题描述】:

我想将 HashMap 的整数值提取到整数数组,丢弃键。 Java 要求数组是 Object 类型的。作为一个Java初学者,我也没有找到将“Object”转换为Integer的方法。

预期的输出是值的排序数组:{3, 2, 1}

import java.util.*;

public class test {
  public static void main(String [] args) {
    Integer[] number = {1, 2, 3, 3, 1, 1};
    HashMap<Integer, Integer> dist = new HashMap<>();
    Integer count;
    for (Integer i : number) {
      count = 1;
      if (dist.containsKey(i))
        count += dist.get(i);
      dist.put(i, count);
    }
    // Program fails below, *Object[] cannot be converted to Integer[]*. 
    Integer[] distArr = dist.values().toArray(); // Works if I replace Integer with Object
    distArr.sort(); // This fails on Object[]
    // ...
  }
}

【问题讨论】:

  • 请看documentationtoArray 可以带一个参数来定义数组的类型。

标签: java arrays hashmap


【解决方案1】:

你必须告诉toArray() 它应该创建什么类型的数组:

Integer[] distArr = dist.values().toArray(Integer[]::new)

或提供“一个只需要填充的现有数组”(这是 Java 8 及更低版本的唯一方式):

Integer[] distArr = dist.values().toArray(new Integer[dist.values().size()])

或者,如果您不介意重新创建数组,您可以简单地提供一个空的“示例数组”:

Integer[] distArr = dist.values().toArray(new Integer[0])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-02
    • 1970-01-01
    • 2019-01-24
    • 1970-01-01
    • 1970-01-01
    • 2013-12-31
    • 1970-01-01
    • 2013-07-09
    相关资源
    最近更新 更多