как переопределить это, чтобы получить структурированный способ - PullRequest
0 голосов
/ 19 января 2019

Я создаю простой проект 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 ]

0 голосов
/ 19 января 2019

Глядя на ваш печатный вывод "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;
  }
0 голосов
/ 19 января 2019

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

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<>();

...