将 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])
我想将 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])