Как сохранить данные HashMap в любом месте моего p c? - PullRequest
0 голосов
/ 22 апреля 2020

На самом деле я написал код, который принимает ввод имени и номера телефона и возвращает утверждение, в котором говорится:

return "You are calling "+name+"; Phone Number: "+phoneNumber;

Теперь у него есть HashMap

. -имя; value- номер телефона ...

У него также есть метод, который принимает входные данные и сохраняет их в HashMap

И метод, который возвращает приведенный выше оператор, чтобы показать, что вы звоните ... ...

Я хочу сохранить данные в любом месте компьютера, чтобы каждый раз, когда пользователь вводит имя и номер телефона, он сохранялся, чтобы пользователь мог звонить в любое время, не сохраняя один и тот же материал дважды. .......

1 Ответ

0 голосов
/ 22 апреля 2020

Возможно, вы просто захотите сохранить HashMap в тот же файл, что и рабочий каталог программы, а затем вызвать содержимое файла при инициализации HashMap для чтения и записи.

Это может быть возможно путем сохранения каждого ключа и его значения в отдельной строке текстового файла с использованием BufferedWriter.

Пример.

BufferedWriter a = new BufferedWriter(new FileWriter("myFile.txt"));
Set<String> keys = hashMap.keySet();
for(String key: keys) {
  a.write(key+" "+hashMap.get(key));
  write.newLine();
}
a.close();

При этом каждая пара ключ-значение будет храниться в текстовом файле, каждая запись будет находиться на отдельной строке. Затем, когда вы снова запустите программу, вы захотите провести l oop через каждую строку текстового файла и инициализировать новый HashMap, чтобы он содержал все те пары ключ-значение, которые вы сохранили. Затем вы сможете добавить в этот список и получить значения. Всякий раз, когда вы закончите с пользователем, обязательно обновите текстовый файл с любыми новыми сопоставлениями ключ-значение.

Это обновление в начале программы можно выполнить с помощью следующего:

HashMap<String, String> hashMap = new HashMap<>();
Scanner scan = new Scanner(new File("myFile.txt"));
while(scan.hasNextLine()) {
  String[] entry = scan.nextLine().split(" ");
  hashMap.put(entry[0], entry[1]);
}
...