Java树映射中的用户定义类对象

Java树映射中的用户定义类对象,java,collections,treemap,Java,Collections,Treemap,我有一个集合(TreeMap),我只想从im传递的对象中打印一个值。这是我正在尝试的代码 Student.java class Student { int rollno; String name; int age; Student(int rollno,String name,int age){ this.rollno=rollno; this.name=name;

我有一个集合(TreeMap),我只想从im传递的对象中打印一个值。这是我正在尝试的代码

Student.java

    class Student {
        int rollno;
        String name;
        int age;
        Student(int rollno,String name,int age){
            this.rollno=rollno;
            this.name=name;
            this.age=age;
         }

         public String toString(){//overriding the toString() method
             return rollno+" "+name+" "+age;
         }

     }
StudentTest.java

 import java.util.*;
 import java.io.*;
 class StudentTest{
     public static void main(String args[]){

         Map<String,Student> al=new TreeMap<String,Student>();
         al.put("a1",new Student(101,"Vijay",23));
         al.put("a2",new Student(106,"Ajay",27));
         al.put("a3",new Student(105,"Jai",21));


         Set set = al.entrySet();
         // Get an iterator
         Iterator i = set.iterator();

         // Display elements
         while(i.hasNext()) {
             Map.Entry me = (Map.Entry)i.next();
             System.out.print(me.getKey() + ": ");
             System.out.println(me.getValue());
         }


         System.out.println(al.get("a1"));

         System.out.println(al.size());

         Set<String> keys =al.keySet();
         for(String key : keys)
             {
                 System.out.println(al.get(key));

             }

        Collection entrySet = al.entrySet();
        Iterator<Student> itr = entrySet.iterator();
        System.out.println("+++++++"+entrySet);
        System.out.println("\n\n\n\n\n");
        System.out.println("+++++++"+itr);
        System.out.println("\n\n\n\n\n");
        while(itr.hasNext())
        {
           Student  st = itr.next();
            System.out.println(st.rollno);
        }
    }
}
import java.util.*;
导入java.io.*;
班级学生测验{
公共静态void main(字符串参数[]){
Map al=新树映射();
al.put(“a1”,新生(101,“Vijay”,23));
al.put(“a2”,新生(106,“Ajay”,27));
al.put(“a3”,新生(105,“Jai”,21));
Set Set=al.entrySet();
//获取迭代器
迭代器i=set.Iterator();
//显示元素
while(i.hasNext()){
Map.Entry me=(Map.Entry)i.next();
System.out.print(me.getKey()+“:”);
System.out.println(me.getValue());
}
System.out.println(al.get(“a1”));
System.out.println(al.size());
Set keys=al.keySet();
用于(字符串键:键)
{
System.out.println(al.get(key));
}
集合entrySet=al.entrySet();
迭代器itr=entrySet.Iterator();
System.out.println(“+entrySet”);
System.out.println(“\n\n\n\n\n”);
System.out.println(“+itr”);
System.out.println(“\n\n\n\n\n”);
while(itr.hasNext())
{
学生st=itr.next();
系统输出打印LN(圣罗尔诺);
}
}
}
  • 我只想打印一个值,该值为rollno、name或age

  • 此外,我想打印的名字为Vijay,这是唯一的一个名字从 收藏


  • 请让我知道我尝试的代码错误的解决方案

    地图的
    entrySet
    是一组
    map.Entry
    s

    你有这个:

    Collection entrySet = al.entrySet();
    Iterator<Student> itr = entrySet.iterator();
    

    1:
    me.getValue().rollno
    immibis me.getValue().rollno将给出错误:----StudentTest.java:22:错误:找不到符号System.out.println(me.getValue().rollno);symbol:variable rollno location:class对象“请让我知道我正在尝试的代码的错误解决方案。”-什么错误?阅读错误信息是开悟的第一步。对不起,伊米比斯没有看它,我教它是粘贴的。错误是:-----线程“main”java.lang.ClassCastException中的异常:java.util.TreeMap$项无法在StudentTest.main(StudentTest.java:42)Student st st=(Student)itr.next()处强制转换为Student;//这是一行感谢immibis分享我正在寻找的正确答案,并纠正我加上一句“永远不要使用原始类型”
    Collection<Student> entrySet = al.entrySet(); // ERROR HERE - Set<Map.Entry<String, Student>> cannot be cast to Collection<Student>
    Iterator<Student> itr = entrySet.iterator();
    
    Collection<Student> entrySet = al.values();
    Iterator<Student> itr = entrySet.iterator();