java - 尝试使用来自另一个数组 + 哈希映射的信息创建填充数组的循环
问题描述
我正在尝试准备要在直方图中使用的数据。我想要 2 个阵列,一个是我收集的最高和最低温度中的所有温度。第二个数组将包含每个温度的频率。
int difference
是最低和最高温度的差异
Array temp
包含收集的温度
HashMap map
包含每个温度收集的频率
Array tempGaps
包含温度 + 未收集的所有其他温度
Array finalTemps
包含每个温度的频率。
我希望实现的目标是两个数组,一个包含所有温度,一个包含每个的频率,它们的索引值是它们彼此对应的值。
public void fillGaps() {
int j = 0;
tempGaps = new int[difference];
finalTemps = new int[difference];
for (int i = 0; i < difference; i++) {
tempGaps[i] = temp[0] + i;
if (tempGaps[i] == temp[j]) {
finalTemps[i] = map.get(new Integer(tempGaps[i]));
j++;
} else {
finalTemps[i] = 0;
}
}
}output: https://pastebin.com/nFCZXFyp
输出:
7 ->1 9 ->1 10 ->1 12 ->1 14 ->2 15 ->1 16 ->1 18 ->2 19 ->1 21 ->1
TEMP GAPS
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
FINAL TEMPS
1 0 1 1 0 1 0 2 0 0 0 0 0 0 0
我的 finalTemp 输出在 14 度后停止 - 出现 2 次。它在我放入频率超过 1 的任何数据集之后执行此操作。请帮助!谢谢!!
解决方案
我不相信你需要这个j
变量。这似乎使事情变得混乱,特别是因为 for 循环只是一次传递。相反,从地图中获取值。如果为 null,则赋值为 0,否则,赋值。
public void fillGaps() {
tempGaps = new int[difference];
finalTemps = new int[difference];
for (int i = 0; i < difference; i++) { //navigate through every temperature
tempGaps[i] = temp[0] + i; //assign the current temperature
Integer frequency = map.get(new Integer(tempGaps[i])); //fetch the frequency
finalTemps[i] = frequency == null ? 0 : frequency; //assign 0 if null, otherwise frequency if not null
}
}
推荐阅读
- python - 在 python 3 中遍历 JSON 文件
- python - 将整个数据集传递给 Keras fit
- ruby - 如何使用 rbenv 在 macOS 上切换 Ruby 版本
- c# - C# 属性的概念从何而来?
- sql - SQL 选择当前月份的记录
- unicode - Teradata - 查找具有特殊占位符的行
- python - 如何创建二维数组作为 array.reshape() 方法的重写代码
- javascript - 将 javascript 字符串字节编码为 base64
- java - 图片加载缓慢——使用picaso和Firebase Android Studio Java
- javascript - 如何在原型上创建将名字和姓氏组合成全名的方法