Проблема с использованием HashMap, содержащей объекты - PullRequest
1 голос
/ 26 марта 2019

Прошу прощения за мой плохой английский

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

Проблема в том, что не все значения возвращаются, а именно второе возвращает странный вывод.

package javaex1;
import java.util.*;

public class Javaex1 {

public static void main(String[] args) {

    Person obj = new Person("Eminem", "Male");
    HashMap<String, Person> MapPerson = new HashMap<String, Person>();
    MapPerson.put("Eminem", obj);

    System.out.println(MapPerson);
  }    
}

Объект

package javaex1;


public class Person {


String Name;
String Gender;


public Person (String name, String Gend) {

    this.Name = name;
    this.Gender = Gend;
}    


public String getName() {
    return Name;
}

public String getGender() {
    return Gender;
}


}

Любая помощь или подсказка очень ценится! Заранее спасибо за ваше время!

Ожидаемые результаты должны быть "Eminem Male". Вместо этого я получаю следующее:

{Eminem=javaex1.Person@2a139a55}

Ответы [ 3 ]

2 голосов
/ 26 марта 2019

Это происходит из-за того, что вы пытаетесь напечатать объект. Объект при печати выдает реализацию класса toString класса по умолчанию, которая показана ниже

// реализация toString в классе объекта

 public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

Это то, что вы видите в своем текущем выводе.

Вам следует переопределить метод toString в классе Person следующим образом.

    public String toString() {
    return this.Name + " " + this.Gender; 
}

, чтобы он возвращал имя и пол

1 голос
/ 26 марта 2019

Вы должны переопределить метод toString в классе Person.Вот так:

@Override
public String toString() {
    return this.Name + " " + this.Gender;
}
0 голосов
/ 26 марта 2019

Вы печатаете объект MapPerson, а не Person.

Ваш код должен быть:

Person person = MapPerson.get("Eminem");
System.out.println(person.getName() + " " + person.getGender());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...