请教:定义一个Student类,要求在程序中生成若干个Student对象,并将这些对象分别保存到ArrayList和HashSet中,然后遍历的输出出来。我这样

teemai 2009-07-17 10:18:39
我这样写的
输出:
Student@35ce36
Student@757aef
Student@d9f9c3
Student@9cab16
Student@1a46e30
Student@3e25a5

我想要输出学生姓名如何实现???



import java.util.*;


public class Student {
String name;
Student(String setName){
name = setName;
}


public static void main(String []args){
Student Student1 = new Student("a");
Student Student2 = new Student("b");
Student Student3 = new Student("c");
Student Student4 = new Student("d");
Student Student5 = new Student("e");
Student Student6 = new Student("f");


List<Student> list = new ArrayList<Student>();
Set<Student> set = new HashSet<Student>();

list.add(Student1);
list.add(Student2);
list.add(Student3);
list.add(Student4);
list.add(Student5);
list.add(Student6);

set.add(Student1);
set.add(Student2);
set.add(Student3);
set.add(Student4);
set.add(Student5);
set.add(Student6);


for (int i = 0; i < list.size(); i++) {
Object m = (Student)list.get(i);
System.out.println(m);
}

}

}
...全文
1492 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
teemai 2009-07-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 knightzhuwei 的回复:]
Java codefor (int i = 0; i < list.size(); i++) {
Student m = (Student)list.get(i);
System.out.println(m.name);
}
[/Quote]问题解决了。。楼上的也做了解释,谢谢两位!
qiandongbo 2009-07-17
  • 打赏
  • 举报
回复
又见果子大哥~
----专业跟帖人员~
  • 打赏
  • 举报
回复
呵呵,那当然不能写成 m.name 了,因为 Object 并没有这个 name 字段啊

由于采用了向上转型,转型后的对象只能看到 Object 的东西。

因为你这个已经采用了泛型参数,也就是 List 后面加上了 <Student>,这样的话 list.get(i) 取出来的对象直接就是 Student 的,
并不需要再进行强制转换,这就是使用泛型参数带来的好处。

这样改一下就可以了:

for (int i = 0; i < list.size(); i++) {
Student m = list.get(i);
System.out.println(m.name);
}


如果没采用泛型参数,也就是不在 List 后面加 <Student> 的话,list.get(i) 取出来是个 Object 的对象,需要强制转换一下:

for (int i = 0; i < list.size(); i++) {
Student m = (Student)list.get(i);
System.out.println(m.name);
}


另外说一下,Student 类中的 name 建议设置成 private 的,并且提供 set/get 方法,养成好的习惯,以更好地进行封装。
knightzhuwei 2009-07-17
  • 打赏
  • 举报
回复
for (int i = 0; i < list.size(); i++) { 
Student m = (Student)list.get(i);
System.out.println(m.name);
}
teemai 2009-07-17
  • 打赏
  • 举报
回复
怎么没人来帮我啊。。新人啊,急需帮助。。 - -
teemai 2009-07-17
  • 打赏
  • 举报
回复
如果写成

for (int i = 0; i < list.size(); i++) {
Object m = (Student)list.get(i);
System.out.println(m.name);
}

它会报错说m.name不是字段。。

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧