谢谢Marko。我重写了代码。尽量使它变得简单。这次它真的可以编译。但它只能删除重复的项目彼此相邻。例如,如果我输入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) + ", ");
}
}
答案 0 :(得分:6)
回答“删除java arraylist中的重复项”的问题:
只需将所有元素放入Set
即可。
-OR -
迭代您的original
列表并将元素添加到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");
答案 1 :(得分:3)
SetListIterator
是由您的代码间接引用的类,但它不在类路径中。在设置项目时,除了SetListType
之外,您忘记复制该源文件,或者可能是您在IDE外部编译它并且无法编译该类。
答案 2 :(得分:1)
从你的说法来看,这听起来就像你运行你的作业时你没有正确设置你的类路径,所以它包含了SetListType的编译类文件。您应该能够通过在运行main方法时设置-classpath
选项以指向此以及您的任务所依赖的任何其他类来解决此问题。
答案 3 :(得分: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");
}