Я очень озадачен своим поведением хэш-карт ...
HashMap<String, String> wordPairs = new HashMap<String, String>();
String[] lines = {"hello", "frühen", "random"};
char[] letters = new char[lines[1].length-2]
for (int i=1; i<lines[1].length-1; i++) {
letters[i-1] = lines[1].charAt[i];
}
Array.sort(letters);
String str = "";
for (int i=0; i<letters.length; i++) {
str += letters[i];
}
str = String.valueOf(lines[1].charAt(0)) +
String.valueOf(lines[i].charAt(lines[1].length()-1)) + str;
wordPairs.put(str, lines[1]);
Этот кодовый блок считывает строку из строки с именем Stringarray и сохраняет ее как значение вместе с соответствующим ключом в хэш-карте.Ключ состоит из одинаковых букв, но в другом порядке.Когда я пытаюсь распечатать «str», это дает мне правильную строку, которую я хочу, которая также работает, если я пытаюсь напечатать уже введенное значение, соответствующее ключу.
Процесс сохранения выглядит следующим образом:
ObjectOutputStream output = new ObjectOutputStream(new FileOutputStream(new
File("Wordpairs.wordp")));
output.writeObject(wordPairs);
output.close();
Теперь о запутанной части: когда я сейчас читаю это так, как это ...:
ObjectInputStream input = new ObjectInputStream(new
FileInputStream("Wordpairs.wordp"));
HashMap<String, String> wordPairs = (HashMap<String, String>)input.readObject();
input.close();
... и работаю с ним следующим образом:
String string_temp = "frühen";
System.out.println(string_temp);
System.out.println(wordPairs.get("fnehr" + "\u00b3"));
The first line gives me the real word "frühen".
Второй должен дать мне точно то же самое, так как «frühen» ранее был сохранен как значение, соответствующее строке «fnehrü» (я использовал точку Unicode, потому что «ü» не читаются из файлов правильно и, например, создаютписьмо с этим кодом).Но вместо этого вторая строка дает мне «führen».
Если кто-то знает, что происходит, помощь очень ценится ... Также не стесняйтесь придумать другое решение для сохранения и чтения HashMaps,я не ограничен только ObjectIn- / OutputStreams!