Я писал этот код для университетской деятельности: мне нужно прочитать некоторые строки из файла .txt, сохранить их в HashMap и распечатать некоторые результаты на основе того, что было в файле.
Строки - это имя и номер, которые являются именем и возрастом этого человека.
Например:
Марка 23
Иоанн 32
.TXT-файлы содержат несколько имен людей, программа работает хорошо, за одним исключением: первое имя списка читается, сохраняется в HashMap, но каждый раз, когда я достигаю его с помощью map.get()
или map.containsKey()
он говорит мне, что ключ не существует.
Эта проблема возникает только с первым прочитанным именем.
В приведенном мной примере это произойдет с Mark , но если я изменю порядок строк, чтобы сначала поставить John , это произойдет с ним, а не с Mark .
Помните, что ключ - это имя человека, а значение - это объект, которого я создаю для этого человека.
Вот мои коды:
class Person {
private String name;
private int age;
//Getter
public int getAge() {
return this.age;
}
public String getName() {
return this.name;
}
//Constructor
public Person(String name, int age) {
this.name = name;
this.age = age;
}
//toString
@Override
public String toString() {
return name + " " + age;
}
}
class OpenText {
public static void textReader(String directory) {
try {
BufferedReader file = new BufferedReader(new FileReader(directory));
String line;
String[] lineSplit;
while ((line = file.readLine()) != null) {
lineSplit = line.split(" ");
try {
int age = Integer.parseInt(lineSplit[1]);
Main.hMap.put(lineSplit[0], new Person(lineSplit[0], age));
} catch (NumberFormatException exc) {
System.out.println(exc);
}
}
file.close();
} catch (IOException exc) {
exc.printStackTrace();
}
}
}
public class Main {
public static Map<String, Person> hMap = new HashMap<>();
public static void main(String[] args) {
OpenText.textReader("DIRECTORY OF THE FILE");
System.out.println(hMap.keySet());
System.out.println(hMap.values());
System.out.println(hMap.get("John"));
}
// [John, Mark, Peter, Philip, Mary]
// [John 32, Mark 23, Peter 37, Philip 20, Mary 54]
// null
}
Полагаю, ясно, что я просто новичок в Java, но любое понимание будет высоко оценено!
Заранее спасибо!