黑马程序员技术交流社区

标题: 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