黑马程序员技术交流社区
标题:
ArrayList集合所遇到的问题
[打印本页]
作者:
张海涛
时间:
2013-1-15 01:36
标题:
ArrayList集合所遇到的问题
本帖最后由 张海涛 于 2013-1-15 17:31 编辑
下边的代码和注释起来的代码运行结果不同,是为什么? import java.util.ArrayList; import java.util.Iterator; public class myarraylist { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub ArrayList al=new ArrayList(); al.add("java01"); al.add("java02"); al.add("java01"); al.add("java03"); al.add("java01"); al.add("java02"); al.add("java01"); al.add("java03"); System.out.println(my(al)); } public static ArrayList my(ArrayList al) { ArrayList newal=new ArrayList(); Iterator it=al.iterator(); while(it.hasNext()) { //用Object obj=it.next(); if(!newal.contains(it.next()) //if(!newal.contains(obj)用有结果 newal.add(it.next()); // newal.add(obj); } return newal; } }
作者:
蒙武辉
时间:
2013-1-15 02:06
此时的obj的类型不明确,强转为String类型即可
作者:
惠晖
时间:
2013-1-15 03:50
it.next() 返回下一个元素。你想添加的却是当前的 所以说 你这样添加 会少好几个要添加的元素 你迭代到了一个元素 添加的却是下一个元素~~~ 明白了么
作者:
唐晓
时间:
2013-1-15 08:28
if(!newal.contains(it.next())
在你判断contains的时候,指针已经偏移到下一个地方,newal.add(it.next()); 添加的元素是下一个的,而不是当前指针,这样判断你的值会少掉一半。
作者:
肖亚光
时间:
2013-1-15 09:10
楼上和楼上都是正确
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2