クラスの構造:
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 フィールドを追加します。この場合、Einstein、Princeton、Quantum は値 12 にのみ存在します。したがって、num フィールドを合計すると 8 になります。したがって、
期待される出力リスト:
12,8
基本的に、オブジェクトの値フィールドと対応する数値フィールドの合計の交点を取得しようとしています。これを達成する方法は?
編集: リスト 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}