班级结构:
class MyObject{
private String key;
private int value;
private int num;
}
创建对象列表:
List<MyObject> a = new ArrayList<MyObject>();
对象列表的内容:
"Einstein",12,1
"Princeton",12,4
"Einstein",16,3
"Princeton",16,7
"Einstein",19,6
"Princeton",22,6
"Quantum",12,3
"Quantum",16,6
对于输入:"Einstein","Princeton","Quantum"
检查所有值字段中是否存在键,如果存在,则将 num 字段相加。在这种情况下,爱因斯坦、普林斯顿、量子只存在于值 12。因此,将 num 字段相加将得到 8。因此,
预期输出列表:
12,8
基本上我正在尝试获取对象的 value 字段与相应 num 字段的总和的交集。如何做到这一点?
编辑:列表 xy = Arrays.asList(terms); // 术语是输入
Map<Integer, Integer> check = new HashMap<Integer, Integer>();
for (int i = 0; i < a.size(); i++) {
if (xy.contains(a.get(i).getKey())) {
Integer sum = check.get(a.get(i).getNum());
if (sum == null)
sum = 0;
sum += a.get(i).getNum();
check.put(a.get(i).getValue(), sum);
}
}
清单内容:
Key: british Value: 899816511 Occ: 8
Key: naren Value: 899816511 Occ: 1
Key: einstein Value: 899816511 Occ: 1
Key: british Value: 562115287 Occ: 1
Key: einstein Value: 2056958632 Occ: 1
Key: british Value: 2056958632 Occ: 1
Key: einstein Value: 1426519040 Occ: 1
Key: british Value: 1426519040 Occ: 5
输入:"british","naren","einstein"
输出:
{1426519040=5, 562115287=1, 2056958632=1, 899816511=1}