Как переопределить это, чтобы получить структурированный способ
Я создаю простой проект 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<>();