java,使用HM(hashmap)的帮助&;提高效率。使用给定的数组和给定的数字来放置重复的&;HM中的非重复数字是否正确
对于一个充满数字且已清空HM的给定数组,如何输入从数组到HM(哈希映射)的所有值,以及重复添加到同一键(即数字)的值(如果数字不在HM中,则从1开始)的数字。我已经写了一个函数来实现这一点,但它似乎不起作用。 这是我的密码:java,使用HM(hashmap)的帮助&;提高效率。使用给定的数组和给定的数字来放置重复的&;HM中的非重复数字是否正确,java,arrays,function,hashmap,Java,Arrays,Function,Hashmap,对于一个充满数字且已清空HM的给定数组,如何输入从数组到HM(哈希映射)的所有值,以及重复添加到同一键(即数字)的值(如果数字不在HM中,则从1开始)的数字。我已经写了一个函数来实现这一点,但它似乎不起作用。 这是我的密码: public static void placeInHM(int[] array,HashMap<Integer, Integer> t ) { for(int i: array) { if(t.containsKey(i
public static void placeInHM(int[] array,HashMap<Integer, Integer> t ) {
for(int i: array) {
if(t.containsKey(i)) {
t.replace(i,t.get(i)+1);
}
else {
t.put(i, 1);
}
System.out.println(t);
}
}
publicstaticvoidplaceinhm(int[]数组,HashMap t){
for(int i:array){
if(t.containsKey(i)){
t、 替换(i,t.get(i)+1);
}
否则{
t、 put(i,1);
}
系统输出打印ln(t);
}
}
我们将不胜感激
示例-数组是:[2,3,5,3,7,9,5,3,7]
HM应该是这样的,值是相同数字重复的次数):
[3(键),3(值)][2,1][5,2][7,2][9,1]
您试图在for a循环中打印地图。
如果只想打印一次,只需在循环外打印即可
此外,还可以使用getOrDefault
for(int i: array) {
t.put(i, t.getOrDefault(i,0)+1);
}
由于您使用的是增强for循环,所以应该在所有位置将
array[i]
更改为i
i
是数组元素,而不是数组索引。它仍然不起作用。我至少会在这里更新代码。谢谢当你说它不起作用时,你应该详细说明。代码是否通过编译?它会引发异常吗?是否会产生错误的输出?只需将代码放入一个小测试程序中,它就是finemap tespMap=newhashmap();int[]arr={1,2,3,4,6,5,3,4,2,1,2,3,5,7,6,4,2,1};placeInHM(arr、tespMap);{1=3, 2=4, 3=3, 4=3, 5=2, 6=2, 7=1}