将 HashMap 的整数值提取到整数数组

Extracting the Integer values of a HashMap to an Integer array

我想将 HashMap 的 Integer 值提取到 Integer 数组,并丢弃键。 Java 要求数组是对象类型。作为一个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[]
    // ...
  }
}

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

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

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

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

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

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