1

谢谢马尔科。我重写代码。尽量让它简单。这次真的可以编译了。但它只能删除相邻的重复项目。例如,如果我输入 1 2 3 3 4 4 5 1 - 输出为 1 2 3 4 5 1。它不能在最后提取副本。(顺便说一句:这个网站的新手,如果让任何显示混乱我很抱歉)

这是新代码:

import java.util.*;

public class SetListDemo{
public static void main(String[] args){
    SetListType newList = new SetListType();
    Scanner keyboard = new Scanner(System.in);

    System.out.println( "Enter a series of items: ");
        String input = keyboard.nextLine();

    String[] original = input.split(" ");
    for (String s : original)
    newList.insert(s);

    List<String> finalList = new ArrayList(Arrays.asList(original)) ;

    Iterator<String> setIterator = finalList.iterator();  

    String position = null;

    while(setIterator.hasNext()){
        String secondItem = setIterator.next();

        if(secondItem.equals(position)){
            setIterator.remove();
        }   

        position = secondItem;
    }

    System.out.println("\nHere is the set list:");
    displayList(finalList);
    System.out.println("\n");
}

public static void displayList(List list){
    for(int index = 0; index <list.size(); index++)
    System.out.print(list.get(index) + ", ");
}

}
4

4 回答 4

6

要回答“删除 java arraylist 中的重复项”的问题:

只需将所有元素放入 aSet中即可。

-或者-

迭代您的original列表并将元素添加到 a List,但在添加它们之前,请检查List#contains()元素是否已经存在。

编辑:试试这个:

String[] original = input.split(" ");
List<String> finalList = new ArrayList<String>();

for (String s : original) {
    if (!finalList.contains(s)) {
        finalList.add(s);
    }
}

System.out.println("\nHere is the set list:");
displayList(finalList);
System.out.println("\n");
于 2012-08-30T12:32:27.077 回答
3

SetListIterator是您的代码间接引用的类,但它不在类路径上。在设置您的项目时,您忘记复制该源文件SetListType,或者可能是您在 IDE 之外编译它并且根本无法编译该类。

于 2012-08-30T12:26:54.627 回答
1

从你所说的听起来,当你运行你的作业时,你没有正确设置你的类路径,以便它包含 SetListType 的编译类文件。您应该能够通过-classpath在运行 main 方法时将选项设置为指向此以及您的作业所依赖的任何其他类来解决此问题。

于 2012-08-30T12:30:09.380 回答
0

您可以使用 Vector 或 ListArray 并在添加之前检查该元素是否存在于新列表中。

只是一个例子:

    Vector<String> list = new Vector<String>();
    System.out.println("list:");
    for(int i=0; i<100; i++){
        list.add("" + new Random().nextInt(10));
        System.out.println(list.lastElement());
    }

    System.out.println("newList:");
    java.util.Iterator<String> it = list.iterator();
    Vector<String> newList = new Vector<String>();
    while(it.hasNext()){
        String s = it.next();
        if(!newList.contains(s)){
            newList.add(s);
        }
    }

    for(String s : newList){
        System.out.println(s);
    }

对于第二部分:

    int[] count = new int[newList.size()];      
    for(String s : list){
        int index = newList.indexOf(s);
        count[index]++;
    }

    for(String s : newList){
        System.out.println(s + " appears " + count[newList.indexOf(s)] + " times");
    }
于 2012-08-30T12:38:31.207 回答