A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张海涛 中级黑马   /  2013-1-15 01:36  /  1187 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张海涛 于 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; } }

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1 赞一个!

查看全部评分

4 个回复

倒序浏览
此时的obj的类型不明确,强转为String类型即可
回复 使用道具 举报
it.next()   返回下一个元素。你想添加的却是当前的 所以说 你这样添加 会少好几个要添加的元素   你迭代到了一个元素  添加的却是下一个元素~~~ 明白了么  

评分

参与人数 1技术分 +1 收起 理由
舒远 + 1

查看全部评分

回复 使用道具 举报
  if(!newal.contains(it.next())     
在你判断contains的时候,指针已经偏移到下一个地方,newal.add(it.next());   添加的元素是下一个的,而不是当前指针,这样判断你的值会少掉一半。  
   

评分

参与人数 1技术分 +1 收起 理由
舒远 + 1 赞一个!

查看全部评分

回复 使用道具 举报
楼上和楼上都是正确
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马