黑马程序员技术交流社区
标题:
ArrayList去重复的问题
[打印本页]
作者:
falonsokaka914
时间:
2014-10-22 19:28
标题:
ArrayList去重复的问题
public static void main(String[] args) {
/*
* 定义一个功能,去除ArrayList中的重复元素
*
* 思路:
* 1.定义一个容器,用于存储唯一性的元素
* 2.迭代已有的元素,将每一个迭代到的元素都到新容器中去判断是否包含
* 如果包含不存,不包含就存
* 3.迭代结束,新容器中存储的都是不重复的元素
*/
ArrayList list = new ArrayList();
list.add("abc1");
list.add("abc2");
list.add("abc1");
list.add("abc2");
list.add("abc1");
System.out.println(list);
list = tokyoList(list);
System.out.println(list);
}
public static ArrayList tokyoList(ArrayList list) {
//创建一个新容器
ArrayList temp = new ArrayList();
//迭代原容器
for(Iterator it = list.iterator(); it.hasNext();){
//判断temp中是否有重复的元素
if(! temp.contains(it.next())){
//没有重复的就存
temp.add(it.next());
}
}
//返回没有重复元素的新容器
return temp;
}
作者:
falonsokaka914
时间:
2014-10-22 19:30
各位大神帮帮我, 我这个哪里错了,求指点:)
作者:
Huberry
时间:
2014-10-22 19:39
一次循环 it.next() 执行了两次,比较的和往新容器中添加的不是一个元素
你要定义一个变量来存储迭代的元素,在利用这个引用来操作
String str = it.next();
if(!temp.contains(str)){
temp.add(str);
}
作者:
falonsokaka914
时间:
2014-10-22 19:42
Huberry 发表于 2014-10-22 19:39
一次循环 it.next() 执行了两次,比较的和往新容器中添加的不是一个元素
你要定义一个变量来存储迭代的元 ...
恩, 谢谢你的指点, 我在按照你的方法去试试
作者:
会飞的蜗牛
时间:
2014-10-22 21:02
楼上的楼上说的对
作者:
chen578157939
时间:
2014-10-22 21:11
来学习学习
作者:
quick3g
时间:
2014-12-3 01:05
Huberry正解呀。楼主想法很好,有效的避免了ArrayList自动改变size()带来的低效问题。
作者:
jcde2014
时间:
2014-12-3 10:08
if(! temp.contains(it.next())){
//没有重复的就存
temp.add(it.next());
}
复制代码
你contains的next元素和你add的next元素不是一个哦。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2