Как переопределить это, чтобы получить структурированный способ

Я создаю простой проект Java управления студентами, используя коллекцию Карт, где id - это мой ключ, а имя, отметки и номер мобильного телефона. значения для карты. Итак, как распечатать его структурированным способом.

HashMap<Integer, LinkedHashSet<StudentCinstructor>> st = new HashMap<>();
LinkedHashSet<StudentCinstructor> st2 = new LinkedHashSet<>();

Scanner sc = new Scanner(System.in);
public void add() {
    System.out.println("enter the name of the student");
    String name = sc.nextLine();
    System.out.println("enter the marks of the student");
    double marks = sc.nextDouble();
    System.out.println("enter the mobile number of the student");
    long mobile_no = sc.nextLong();
    st2.add(new StudentCinstructor(name, marks, mobile_no));
    System.out.println("enter the unique id of the student");
    int id = sc.nextInt();
    st.put(id, st2);

с пользовательским классом, когда я пытаюсь напечатать его в методе main, он дает мне адрес с хэш-кодом. "HashmapDemo.MethodsForManagement@3d4eac69"

2 ответа

Глядя на ваш печатный вывод "HashmapDemo.MethodsForManagement@3d4eac69", кажется, что вы печатаете объект класса HashmapDemo.MethodsForManagement, Если вы хотите напечатать объект StudentCinstructor, вам нужно передать этот объект в метод печати, как System.out.println(student);,

И вам нужно переопределить toString() метод в StudentCinstructor учебный класс. (т.е. поместите ниже код в StudentCinstructor учебный класс.)

(name, marks а также mobile_no в приведенном ниже коде поля в StudentCinstructor учебный класс.)

  @Override
  public String toString()
  {
    return "Name=" + name + ", Marks=" + marks + ", Mobile number=" + mobile_no;
  }

Два замечания:

1- Когда вы пытаетесь напечатать объект StudentCinstructor, если нет выделенного toString() метод, вы не получите хорошо структурированный вывод. Поэтому, что вам нужно сделать, это написать toString() метод для вашего класса, а затем вы можете распечатать на консоль. Пример:

public static String toString() {
     return "Customize here + Put this method inside your class";
}

2- Я не понимаю, почему вы используете LinkedHashSet хранить StudentCinstructor объекты, а затем хранить этот HashSet внутри карты, а не создавать StudentCinstructor Объект и сохранить его на карте напрямую, если у всех студентов есть уникальный идентификатор. Такие как:

HashMap<Integer, StudentCinstructor> st = new HashMap<>();

Другие вопросы по тегам