我正在创建一个程序,该程序可以创建和修改整数集
这是我的代码:
public class IntSet{
private final int MAXALLOWEDSETVALUE=2000;
private boolean [] data = new boolean[MAXALLOWEDSETVALUE+1];
public IntSet(int... elts) {
for(int iteration = 0; iteration < elts.length; iteration++) {
if(elts[iteration] <= MAXALLOWEDSETVALUE)
data[elts[iteration]] = true;
}
}
public IntSet(IntSet source){
System.arraycopy(source.data, 0, this.data, 0, MAXALLOWEDSETVALUE);
}
public void setTo(IntSet source){
System.arraycopy(source.data, 0, this.data, 0, MAXALLOWEDSETVALUE);
}
public void insertElement(int element){
data[element] = true;
}
public void deleteElement(int element){
data[element] = false;
}
public boolean hasElement(int element){
if(data[element] == true)
return true;
else
return false;
}
public boolean equals(IntSet other){
for(int iteration = 0; iteration < MAXALLOWEDSETVALUE; iteration++) {
if(data[iteration] == other.data[iteration]) {
} else {
return false;
}
}
return true;
}
public String toString() {
String output = "{";
for(int iteration = 0; iteration < MAXALLOWEDSETVALUE; iteration++) {
if(data[iteration] == true)
output += (iteration + ", ");
}
output += "}";
return output;
}
我正在为我的减法函数苦苦挣扎:减法函数形成一个新集合,该集合等于第一个集合,但第二个集合中的所有元素都被删除了。我知道我需要返回一个对象,但是我不确定该怎么做。任何帮助表示赞赏。
public IntSet subtract(IntSet other) {
for(int iteration = 0; iteration < MAXALLOWEDSETVALUE; iteration++) {
if(data[iteration] == true && other.data[iteration] == true) {
other.data[iteration] = false;
}
if(data[iteration] == true && other.data[iteration] == false) {
other.data[iteration] = true;
}
}
System.arraycopy(other.data, 0, this.data, 0, MAXALLOWEDSETVALUE);
}
public int getUpperLimit(){
return MAXALLOWEDSETVALUE;
}
}
最佳答案
您的减法可以这样实现:
创建当前对象的副本。称为newSet
。
如果other
set包含一个元素,则将该newSet
元素设置为false
,这实际上是将该元素从newSet
中“删除”。
返回newSet
。
代码如下:
public IntSet subtract(IntSet other) {
IntSet newSet = new IntSet (this);
for(int iteration = 0; iteration < MAXALLOWEDSETVALUE; iteration++) {
if(other.data[iteration]) {
newSet.data[iteration] = false;
}
}
return newSet;
}
希望这可以帮助!