【发布时间】:2012-08-25 04:11:34
【问题描述】:
谢谢马尔科。我重写代码。尽量让它简单。这次真的可以编译了。但它只能删除相邻的重复项目。例如,如果我输入 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) + ", ");
}
}
【问题讨论】:
-
SetListType 不是 Java 的内置类。这是您自己编写的课程还是您使用了错误的课程?
-
当您问这样的问题时,请帮助我们更多地了解您的代码,SetListType 是什么以及它来自哪里?
-
首先感谢所有cmets。
-
请查看我编辑的答案,我添加了一个代码示例来展示它是如何完成的。您的代码的问题是,您仅将一个项目与下一个项目 (secondItem = iterator.next()) 与列表中的所有元素进行比较。因此,第一个 1 仅与 2 进行比较,而不是与以下所有项目进行比较。
List#contains()方法基本上完全符合您通过迭代和比较尝试实现的功能。 -
感谢 Ridcully 将进行试用。