我有两个列表,其中链接匹配索引的列表之间的项目.第一个列表提供与第二个列表值相关的键:
List<Double> a1 = [10,20,20,30,10]; // keys
List<Double> y1 = [2012,2013,2012,2012,2013]; // values
Run Code Online (Sandbox Code Playgroud)
我想从密钥(索引)列表中删除重复项,以便在找到重复项时,添加密钥的值.因此,例如,如果找到值为10的两个键,我想用一个值为20的单个键替换两个键.将重复此过程,直到没有重复的键为止.所以我希望列表的输出如下:
List<Double> a1 = [60,30];
List<Double> y1 = [2012,2013];
Run Code Online (Sandbox Code Playgroud)
我试图使用以下代码解决此问题,但输出不正确.
y2=new ArrayList<Double>();
a2 = new ArrayList<Double>();
String y = "";
double a = 0;
for (int i = 0; i < y1.size(); i++) {
if (y1.get(i).equals(y)) {
a = a + y1.get(i);
} else {
if (!y.equals("")) {
y2.add(y);
a2.add(a);
}
y = y1.get(i);
a = a1.get(i);
}
}
y2.add(y);
a2.add(a);
Run Code Online (Sandbox Code Playgroud)
任何帮助表示感谢,谢谢.
用一个 Map
Map<Double, Double> map = new HashMap<>();
for (int i = 0; i < y1.size(); i++) {
double oldValue = map.containsKey(y1.get(i)) ? map.get(y1.get(i)) : 0.0;
map.put(y1.get(i), oldValue + a1.get(i));
}
y1.clear();
a1.clear();
for (Entry<Double, Double> entry : map.entrySet()) {
y1.add(entry.getKey());
a1.add(entry.getValue());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
367 次 |
| 最近记录: |