黑马程序员技术交流社区
标题:
为何自定义的函数无法去除重复的函数?
[打印本页]
作者:
追逐
时间:
2014-3-21 20:11
标题:
为何自定义的函数无法去除重复的函数?
本帖最后由 追逐 于 2014-3-21 20:42 编辑
import java.util.ArrayList;
import java.util.Iterator;
/*
取出ArrayList集合中的重复元素
*/
class ArrayListTest
{
public static void main(String[] args)
{
ArrayList al = new ArrayList();
al.add("java01");
al.add("java01");
al.add("java02");
al.add("java02");
al.add("java03");
System.out.println(al);
al = quChu(al);
System.out.println(al);
}
public static ArrayList quChu(ArrayList al) //此函数为何无法去除重复函数,求解????????
{
//创建一个容器
ArrayList a = new ArrayList();
//定义一个迭代器
Iterator it = a.iterator();
for( ; it.hasNext(); ) //只要容器不为空,就继续执行。知道结果为false。就停止循环
{
Object obj = it.next();
if(!a.contains(obj)) //此容器中不包含此元素。就往下执行
{
a.add(obj);
}
}
return a;
}
}
复制代码
此为运行结果:
QQ截图20140321201634.jpg
(86.1 KB, 下载次数: 31)
下载附件
2014-3-21 20:17 上传
作者:
乔钰博
时间:
2014-3-21 20:29
因为你在方法内new了一个ArrayList a,new出来的是空的 Iterator it = a.iterator();也是空的 改成 Iterator it = al.iterator();
作者:
焚雨成灰
时间:
2014-3-21 20:33
//定义一个迭代器
Iterator it = al.iterator();
复制代码
应该是这个地方出问题了,不小心啊
作者:
青木郎
时间:
2014-3-21 20:34
改成
import java.util.ArrayList;
import java.util.Iterator;
/*
取出ArrayList集合中的重复元素
*/
class ArrayListTest
{
public static void main(String[] args)
{
ArrayList al = new ArrayList();
al.add("java01");
al.add("java01");
al.add("java02");
al.add("java02");
al.add("java03");
System.out.println(al);
al = quChu(al);
System.out.println(al);
}
public static ArrayList quChu(ArrayList al) //此函数为何无法去除重复函数,求解????????
{
//创建一个容器
//ArrayList a = new ArrayList();
//定义一个迭代器
Iterator it = al.iterator();
for( ; it.hasNext(); ) //只要容器不为空,就继续执行。知道结果为false。就停止循环
{
Object obj = it.next();
if(!a.contains(obj)) //此容器中不包含此元素。就往下执行
{
a.add(obj);
}
}
return a;
}
}
作者:
轩辕冰晨
时间:
2014-3-21 20:37
import java.util.*;
class ArrayListTest
{
public static void sop(Object obj)
{
System.out.println(obj);
}
public static void main(String[] args)
{
ArrayList al = new ArrayList();
al.add("java01");
al.add("java02");
al.add("java01");
al.add("java02");
al.add("java01");
al.add("java03");
sop(al);
al = singleElement(al);
sop(al);
}
public static ArrayList singleElement(ArrayList al)
{
ArrayList newAl = new ArrayList();
for(Iterator it = al.iterator(); it.hasNext();)
{
Object obj = it.next();
if(!newAl.contains(obj))
{
newAl.add(obj);
}
}
return newAl;
}
}
作者:
追逐
时间:
2014-3-21 20:40
好的。问题解决了。谢谢各路大神
作者:
yanzhendong
时间:
2014-3-21 20:48
楼主你好,你这段代码有两个问题,第一,如果你定义了一个迭代器,最好不要再往里面再执行add()操作,可能会出错,第二,你的迭代器错误的指向了一个空arraylist,你本应该指向al的,一下是我建议的代码:
public static ArrayList quChu(ArrayList al) //此函数为何无法去除重复函数,求解????????
{
//创建一个容器
ArrayList a =new ArrayList();
//定义一个迭代器
Iterator it = al.iterator();
for( ; it.hasNext(); ) //只要容器不为空,就继续执行。知道结果为false。就停止循环
{
Object obj = it.next();
if(!a.contains(obj)) //此容器中不包含此元素。就往下执行
{
a.add(obj);
}
}
return a;
}
}
复制代码
作者:
刘先斌
时间:
2014-3-21 21:02
//创建一个容器
ArrayList a = new ArrayList();
//定义一个迭代器
Iterator it = a.iterator();//#这里应该是传进来的内个容器而不是新建立的这个!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2