我正在使用Maps集合创建学生管理简单的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);
使用自定义类,当我尝试在主要方法中打印它时,会给我一个带有哈希码的地址。 “ HashmapDemo.MethodsForManagement@3d4eac69”
答案 0 :(得分:0)
两句话:
1-当您尝试打印对象StudentCinstructor
时,如果没有专用的toString()
方法,则不会得到结构良好的输出。因此,您需要为类编写一个toString()
方法,然后可以打印到控制台。
示例:
public static String toString() {
return "Customize here + Put this method inside your class";
}
2-我不明白为什么您要使用LinkedHashSet
存储StudentCinstructor
对象,然后将此HashSet存储在地图中,而不是创建StudentCinstructor
对象并将其存储在如果所有学生都有唯一的ID,则直接在地图上显示。
如:
HashMap<Integer, StudentCinstructor> st = new HashMap<>();
答案 1 :(得分:0)
查看打印输出“ 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;
}