黑马程序员技术交流社区
标题:
map扩展练习问题
[打印本页]
作者:
范龙波
时间:
2013-5-8 05:26
标题:
map扩展练习问题
本帖最后由 范龙波 于 2013-5-8 21:06 编辑
import java.util.*;
class StudentDemo
{
public static void main(String[] args)
{
HashMap<String,List<Student>> CZBK=new HashMap<String,List<Student>>();
List<Student> YuReBan=new ArrayList<Student>();
List<Student> JiuYeBan=new ArrayList<Student>();
CZBK.put("第一层",YuReBan);
CZBK.put("第二层",JiuYeBan);
YuReBan.add(new Student("lisi01",26));
YuReBan.add(new Student("lisi02",29));
YuReBan.add(new Student("lisi03",26));
YuReBan.add(new Student("lisi04",29));
JiuYeBan.add(new Student("李四02",28));
JiuYeBan.add(new Student("李四01",29));
sop(YuReBan);
sop(JiuYeBan);
sop(CZBK);
GetMap(YuReBan);
Iterator<String> iter=CZBK.keySet().iterator();
while(iter.hasNext())
{
String n=iter.next();
List<Student> XueSheng=CZBK.get(n);
sop(n);
GetMap(XueSheng); //打印出来的是学生的地址值不是里面的具体内容非常郁闷,帮忙找一下问题出在哪里了,谢谢。
}
}
public static void sop(Object obj)
{
System.out.println(obj);
}
public static void GetMap(List<Student> tm) //我总感觉问题好像出在了这里,可是没有找到。
{
Iterator<Student> it=tm.iterator();
while(it.hasNext())
{
Student s=it.next();
sop(s);
}
}
}
class Student implements Comparable<Student>
{
private String name;
private int age;
public void SetName(String name)
{
this.name=name;
}
public String GetName()
{
return name;
}
public void SetAge(int age)
{
this.age=age;
}
public int GetAge()
{
return age;
}
public int compareTo(Student stu)
{
int in=new Integer(this.age).compareTo(new Integer((stu.age)));
if(in==0)
this.name.compareTo(stu.name);
return in;
}
public int hashCode()
{
return name.hashCode()+age*5;
}
public boolean equals(Object obj)
{
if(!(obj instanceof Student))
throw new ClassCastException("传递的对象不是学生");
Student st=(Student)obj;
return this.name.equals(st.name)&&this.age==st.age;
}
public Student(String name,int age)
{
this.name=name;
this.age=age;
}
}
作者:
刘学明
时间:
2013-5-8 10:00
import java.util.*;
class StudentDemo
{
public static void main(String[] args)
{
HashMap<String,List<Student>> CZBK=new HashMap<String,List<Student>>();
List<Student> YuReBan=new ArrayList<Student>();
List<Student> JiuYeBan=new ArrayList<Student>();
CZBK.put("第一层",YuReBan);
CZBK.put("第二层",JiuYeBan);
YuReBan.add(new Student("lisi01",26));
YuReBan.add(new Student("lisi02",29));
YuReBan.add(new Student("lisi03",26));
YuReBan.add(new Student("lisi04",29));
JiuYeBan.add(new Student("李四02",28));
JiuYeBan.add(new Student("李四01",29));
// sop(YuReBan);
// sop(JiuYeBan);
// sop(CZBK);
// GetMap(YuReBan);
Iterator<String> iter=CZBK.keySet().iterator();
while(iter.hasNext())
{
String n=iter.next();
List<Student> XueSheng=CZBK.get(n);
sop(n);
GetMap(XueSheng); //打印出来的是学生的地址值不是里面的具体内容非常郁闷,帮忙找一下问题出在哪里了,谢谢。
}
}
public static void sop(Object obj)
{
System.out.println(obj);
}
public static void GetMap(List<Student> tm) //我总感觉问题好像出在了这里,可是没有找到。
{
Iterator<Student> it=tm.iterator();
while(it.hasNext())
{
Student s=it.next();
sop(s);
//方法二:将sop(s)改成 sop(s.GetName()+".."+s.GetAge());//调用学生的具体方法来返回学生对象的内容
}
}
}
class Student implements Comparable<Student>
{
private String name;
private int age;
public void SetName(String name)
{
this.name=name;
}
public String GetName()
{
return name;
}
public void SetAge(int age)
{
this.age=age;
}
public int GetAge()
{
return age;
}
public int compareTo(Student stu)
{
int in=new Integer(this.age).compareTo(new Integer((stu.age)));
if(in==0)
this.name.compareTo(stu.name);
return in;
}
public int hashCode()
{
return name.hashCode()+age*5;
}
public boolean equals(Object obj)
{
if(!(obj instanceof Student))
throw new ClassCastException("传递的对象不是学生");
Student st=(Student)obj;
return this.name.equals(st.name)&&this.age==st.age;
}
public Student(String name,int age)
{
this.name=name;
this.age=age;
}
//这是解决办法之一:让学生对象覆盖toString方法,因为输出对象是输出toString方法中返回的东西,
//如果不重写 输出的 默认格式是: 对象名@哈希值。
public String toString()
{
return name+"..."+age;
}
}
复制代码
作者:
范龙波
时间:
2013-5-8 21:04
刘学明 发表于 2013-5-8 10:00
明白了非常感谢。
作者:
黄玉昆
时间:
2013-5-8 21:05
如果问题未解决,请继续追问,如果问题解决了,请将分类改为“已解决”,谢谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2