我是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);
}
}
}
}