用去除ArrayList中重复元素,思路是定义一个新的ArrayList来接收原来的ArrayList中的元素,如果新的元素没有该元素则添加,如果有了该元素就不添加,返回新的ArrayList.小弟定义了以下小程序,编译没问题,但是不能运行。不知哪里出错。
[import java.util.*;
class ArrayListTest2
{
public static void main(String[] args)
{
ArrayList a=new ArrayList();
a.add("java01");
a.add("java02");
a.add("java03");
a.add("java04");
a.add("java01");
System.out.println(haha(a));
}
public static ArrayList haha(ArrayList a)
{
ArrayList a1=new ArrayList();
Iterator t=a.iterator();
while (t.hasNext())
{
if (!a1.contains(t.next()))
{
a1.add(t.next());
}
}
return a1;
}
}][/code]
[import java.util.*;
class ArrayListTest2
{
public static void main(String[] args)
{
ArrayList a=new ArrayList();
a.add("java01");
a.add("java02");
a.add("java03");
a.add("java04");
a.add("java01");
System.out.println(haha(a));
}
public static ArrayList haha(ArrayList a)
{
ArrayList a1=new ArrayList();
Iterator t=a.iterator();
while (t.hasNext())
{
if (!a1.contains(t.next()))
{
a1.add(t.next());
}
}
return a1;
}
}][/code]
if (!a1.contains(t.next()))
{
a1.add(t.next());
}
t.next()就已经把值取出来了,可以改成:
while (t.hasNext())
{
String str = (String) t.next();
if (!a1.contains(str))
{
a1.add(str);
}
}
也就是你用来判断的数,和你添加的不是同一个数了。
如果再调用就会取得下一个元素
如果下一个元素为空就会报错帮你改了下,一堆警告
import java.util.ArrayList;
import java.util.Iterator;class Test {
public static void main(String[] args) {
ArrayList<String> a = new ArrayList<String>();
a.add("java01");
a.add("java02");
a.add("java03");
a.add("java04");
a.add("java01");
System.out.println(haha(a));
} public static ArrayList<String> haha(ArrayList<String> a) {
ArrayList<String> a1 = new ArrayList<String>();
Iterator<String> t = a.iterator();
while (t.hasNext()) {
String v = t.next();
if (!a1.contains(v)) {
a1.add(v);
}
}
return a1;
}
}