[email protected]:~$ cat sample.csv
hello 4.0
hi 3.1
hello 5.0
[email protected]:~$ java Solution sample.csv
hi 3.1
hello 9.0
、それは私に期待される結果を与えた:
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new FileReader(args[0]));
Map<String, Double> map = new HashMap<>();
while (reader.ready()) {
String[] ss = reader.readLine().split(" ");
String key = ss[0];
String val = ss[1];
double value = Double.parseDouble(val);
if (map.containsKey(key)) {
map.put(key, map.get(key) + value);
}
else map.put(key, value);
}
for (Map.Entry<String, Double> pair : map.entrySet())
{
System.out.println(pair.getKey() + " " + pair.getValue());
}
reader.close();
}
}
これはどのような上記のプログラムの出力です。
あなたのキーは文字列以外のクラスAのインスタンスである場合は、クラスAのhashCode()
とequals()
方法
HashMapの店舗オブジェクトのキーに基づいてバケット内のすべての要素をオーバーライドする必要があり、それは内の要素を保存しますオブジェクトのハッシュコード値に基づいた特定のバケットたとえば、2つのオブジェクトa1とa2が同じハッシュコード値を持つ場合、それらは同じバケットのリストに入れられ、a1を取得するとまずハッシュコードをチェックして正しいバケットを見つけてから要素リストを繰り返しますオブジェクトの等価性を比較するequals
"それは動作しない"ということをもっと記述できますか? 'HashMap'と' String'は実際に動作しますので、それは何か別のものでなければなりません。入力データに問題がある可能性があります。 – markspace
あなたのプログラムはそれを記述するときに機能し、同様の行を正しく追加します。私は、文字列 'Ivanov'が別の行にある別の文字列と一致しないなど、入力データに何か異なるものがあると思います。 – mvd