use*_*396 3 java arraylist duplicate-removal
我正在尝试为我的 java 入门课程解决一个作业问题,我们应该在不使用集合或 .contains() 方法的情况下从列表中删除重复的项目。基本上只是使用迭代器和 .equals() 方法。我的代码如下:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class sample {
public static void main(String[] args) throws BadListException {
List<String> myList = new ArrayList<String>();
myList.add("A");
myList.add("B");
myList.add("B");
myList.add("C");
myList.add("B");
myList.add("D");
unique(myList);
System.out.println(myList);
}
public static List<String> unique( List<String> items ) throws BadListException {
List<String> newList = new ArrayList<String>();
Iterator<String> itr = items.listIterator();
// If items is null, throw a BadListException.
if (items == null){
throw new BadListException();
}
// If items is empty, return a new empty list.
if (items.isEmpty()){
return newList;
}
// Otherwise create and return a new list that contains the items
// in L with all duplicates removed.
// Example: items: "A","B","C" result: "A","B","C"
// Example: items: "A","A","A" result: "A"
// Example: items: "A","B","B","C","A","D" result: "A","B","C","D"
while (itr.hasNext()){
for (int i = 0; i < items.size()-1; i++){
if (itr.next().equals(items.get(i))){
itr.remove();
}
}
}
items = newList;
return newList;
Run Code Online (Sandbox Code Playgroud)
如果有人可以解释我做错了什么以及我应该如何去做,那将会非常有帮助。请注意,由于这是为了让我准备测试,所以我希望得到解释而不仅仅是正确的代码。
我不会准确地解释出了什么问题,而是建议您使用调试器来查看程序当前正在执行的操作。特别是,查看每次调用时迭代器返回的内容iter.next()。
正确解决方案的提示:
将来,当您提出问题时,您应该更好地说明该程序实际上应该做什么。例如:
unique方法是否应该从参数列表中删除元素或返回一个包含(仅)唯一元素的新列表。所有这些因素对于决定如何解决此类问题都很重要。尤其是在现实世界中。即使你的作业没有说明这些事情,你仍然需要自己决定你的代码如何工作......并用 javadoc 注释记录这一点。
| 归档时间: |
|
| 查看次数: |
15581 次 |
| 最近记录: |