如何使用 java 接口来计算两个集合的并集、交集和差值,所有这些都在接口的默认方法中



我是Java的新手,如果这是超级基本的,我很抱歉。我需要在接口 ISet 中创建默认方法,以允许计算在实现此接口的类中创建的 2 个集合的并集、交集和差值。我知道如何计算所有这些,但我不知道如何在接口中语法上做到这一点,因为它使用接口对象而不是实现类中的数据结构。

守则:

public interface ISet {
void add(Integer val);
Integer removePos(int pos);
boolean contains(Integer val);
int getSize();
default void union(ISet unionWith) {
    //List<Integer>unionSet = new ArrayList<>();
    //unionSet.add(unionWith);
    //List set = new ArrayList();
    //set.addAll(0, unionWith);
    //ISet unionSet = this;
    // To call in main: this.union(unionWith)
    // For my variables it would be mySet.union(mySet2)
    //this.getSize();
    int size1 = this.getSize();
    int size2 = unionWith.getSize();
    if(this == unionWith) {
    }
    //List<Integer> unionList = Arrays.asList(this);
    ISet allVals = this.add(Integer val);
    for(int i = 0; i < size1 + size2; i++) {
        if(!this.contains(Integer.unionWith));
    }
}
default void intersect(ISet intWith) {
}
default void difference(ISet diffWith) {
}

}

对不起,墓地我只是尽我所能。除了尺寸之外,这些几乎都不起作用。我知道我应该使用上面的所有其他方法,但我不知道在这种情况下如何使用它们。

通常会自己尝试弄清楚这样的事情,但是在无法合并两组的 3 个小时之后,我意识到我只需要更多地了解 java 和接口的工作原理。

我将非常感谢你们提供的任何帮助!

也许你需要一个方法:整数get(int pos(;

public interface ISet {
void add(Integer val);
Integer get(int pos);
Integer removePos(int pos);
boolean contains(Integer val);
int getSize();
default void union(ISet unionWith) {
    for (int i = 0; i < unionWith.getSize(); i++) {
        this.add(unionWith.get(i));
    }
}
default void intersect(ISet intWith) {
    for (int i = getSize() - 1; i >= 0; i--) {
        Integer value = get(i);
        if (!intWith.contains(value)) {
            removePos(i);
        }
    }
}
default void difference(ISet diffWith) {
    for (int i = getSize() - 1; i >= 0; i--) {
        Integer value = get(i);
        if (diffWith.contains(value)) {
            removePos(i);
        }
    }
}

}

相关内容

最新更新