Ich muss einige Daten aus der Datei lesen und sortieren. Aber wenn ich versuche, containsKey()
Methode zu verwenden, funktioniert es nicht und ich habe 2 verschiedene Schlüssel mit der gleichen Füllung. Der Grund, warum ich ein Problem habe, ist, dass die Methode den Objektparametertyp hat und es Links zu Objektvergleich gibt. Aber wie kann ich String-Schlüssel in HashMap vergleichen?HashMap und containsKey() Methode
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();
}
}
Dies ist, was die oben genannten Programmausgaben:
Sidorov 4.0
Petrov 3.0
Ivanov 5.0
Ivanov 33.0
Können Sie mehr beschreiben, was "es nicht funktioniert" bedeutet? 'HashMap' und' String' funktionieren tatsächlich, es muss also etwas anderes passieren. Möglicherweise ein Problem mit Ihren Eingabedaten. – markspace
Ihr Programm funktioniert so, wie Sie es beschreiben, es fügt die ähnlichen Zeilen korrekt zusammen. Ich würde erwarten, dass sich etwas in den Eingabedaten unterscheidet, wie zum Beispiel die Zeichenfolge "Ivanov", die nicht mit einer anderen in einer anderen Zeile übereinstimmt. – mvd