永发信息网

java容器问题

答案:3  悬赏:0  手机版
解决时间 2021-08-20 13:36

import java.util.*;
class ArrayListTest{
public static void printElements(Collection d){
Iterator it =d.iterator();
while(it.hasNext()){
System.out.println(it);
}
}
public static void main(String[] args){
Student s1=new Student(1,"zhangsan");
Student s2=new Student(4,"lisi");
Student s3=new Student(3,"wangwu");
ArrayList x=new ArrayList();
x.add(s1);
x.add(s2);
x.add(s3);
Collections.sort(x);
printElements(x);
}
}

class Student implements Comparable{
int num;
String name;
Student(int num,String name){
this.num=num;
this.name=name;
}
public int compareTo(Object o){
Student s=(Student)o;
return num>s.num ? 1: (num==s.num ? 0 : -1);
}
public String toString(){
return num+":"+name;
}
}

报一个注意。为什么?

最佳答案

不清楚您所说的报一个注意指的是什么,但看您的程序,printElements方法会导致死循环:


while(it.hasNext()){
System.out.println(it);
}


因为这样的话it永远指在原地,出不了while循环。需要改成


while(it.hasNext()){
System.out.println(it.next()); // 或是System.out.println(it.next().toString()); 如果您需要的是可读的输出。
}

全部回答

没有使用泛型设计,你现在的编译器,也就是jdk应该是5.0以上,要求所有容器类,需要提供容器内所装载的对象类型,也就是List<M>中M表示List装的都是M类型的实例,就如你这个程序,应该是ArrayList<Student>,如果没有明确指明List中装载的对象,Java将默认为装的都是Object类型的对象,此时就会出现注意事项,因为对于编译器来说,无法检查你放到List里面究竟是什么对象,这样当程序中放入了一个其他类型对象时候,编译能通过,但是运行时就出现错误。

这是jdk5新加入的功能,如果想不提示注意,就可以将编译器的级别调整为jdk4或者在程序得上方加入注释

@SuppressWarnings("unchecked"),这样就不会有注意了,但同时,你也丧失了用jdk5泛型来检查容器存储类型是否安全的功能。

可能你用的jdk是5.0以上的,要是这样警告来自ArrayList x=new ArrayList();没有定义成泛型

ArrayList<Student > x=new ArrayList<Student >();

还有你就是楼上的问题。不能跳出循环,这个编译不会产生警告,只是运行会死循环。

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
孕妇期间已经做4次B超还可以做彩超吗
我下载游戏在手机上,怎么解压安装
耒阳市衡阳正宗兰州拉面(南外街店)地址是什么
一道惯性问题.按我的理解,无论向东还是向西,
职业飞机大概多少钱一架?我想买二十个,帮朋
魏晨的新专辑什麽时候才开始卖
找人在浙1区配练狙的,就是近几天
诺基亚e66关闭游戏或QQ是怎么关闭的?
cf里沙漠灰后花园那里怎么上房顶啊?求视屏
车队 保持微笑 队长改什么名好
关于状语从句主句从句的时态
从此的从意思是什么,我从你是什么意思
韶山市湘潭方太厨房电器地址在什么地方,想今
甘油三酯高是什么意思,甘油三酯偏低怎么办?
在《天龙八部》这部电视里, 放到王姑娘和段
推荐资讯
汇算清缴调整项目,企业所得税汇算清缴需要注
林甸县大庆吕屯一头牛特色烧烤在哪里啊,我有
数学家的故事300字~~399,谢谢.帮一下忙.
现在QQ宠物滑雪怎么没有百分百好心情?
想删除发给朋友空间的留言
有诗意的青梅煮酒诗句,青梅煮酒的诗句
关于精准扶贫的面试题,落实中央精准扶贫,精
爱护荷花幽默标语,今年8月下旬昆明翠湖的荷花
解方程 4分之1x+(64-x)3分之1=18
请写一句赞美荷花的话,写一段赞美友情的话50
为什么海尔空调窗机运行30分钟就停
手机亮点问题,急急急!
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?