0

クラスの構造:

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}
4

1 に答える 1