如何编写一个接收ADT并删除重复项的方法?

时间:2015-06-23 00:58:58

标签: java iterator abstract-data-type

我们获得了实现可迭代接口的genericSackADT(下面的代码)的实现。

public interface GSackIterableADT<T> extends Iterable<T> {
        void add(T item);
        T remove() throws NoSuchElementException;
        boolean isEmpty();
        Iterator<T> iterator();

我们应该编写一个方法,可以接受它作为输入并删除所有重复项。

我想我需要一些概念性指导。我现在的计划是创建一个名为removeDuplicates的方法,该方法使用迭代器扫描ADT并在找到它们时删除重复项。我检查了迭代器API,我应该能够使用E next()和void remove()来做到这一点,对吗?但是,我的代码现在很乱,我不知道到底要去哪里......

public static <E> int removeDuplicates (match) {
        int counter = 0;
        ListIterator<E> iter = myList.listiterator();
        while (iter.hasNext());
        E val = iter.next();
        //the goal in the next step is to remove duplicates as the iterator finds them
        if (val.equals(match){
            void remove()

1 个答案:

答案 0 :(得分:0)

删除重复项的一种简单方法是将您的收藏集添加到#include <iostream> int main() { for( int N=1 ; N<=100 ; ++N ) { int sum = 0; for (int i = 0; i*i*i < N; i++) for (int j = 0; j*j*j < N; j++) for (int k = 0; k*k*k < N; k++) sum++; std::cout << "For N=" << N << ", sum=" << sum << '\n'; } return 0; } ,然后将其转换回Set。 Java List实现将在Set操作期间自动删除重复项。我假设您的实现是使用示例代码中的add()

List