日期:2014-05-20  浏览次数:20642 次

小程序不知道哪里出错
用去除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]

------解决方案--------------------
探讨
我什么要接收一下?直接添加不行么?

------解决方案--------------------
t.next()是取出当前迭代器指向元素
如果再调用就会取得下一个元素
如果下一个元素为空就会报错

帮你改了下,一堆警告。。。

Java code

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;
    }
}