我正在尝试编写几个成员方法:
创建类IntegerSet的方法如下:类IntegerSet的每个对象都可以容纳0到100范围内的整数。一个集在内部表示为1和0的数组。如果整数i在集合中,则数组元素a [i]为1。如果整数j不在集合中,则数组元素a [j]为0。例如,整数{1、3、4、8、9}的集合内部表示为:
{1, 3, 4, 8, 9} = {0,1,0,1,1,0,0,0,0,1,1}
public IntegerSet相交(IntegerSet)返回set,它是参数与该set的理论上的交集,即
A ∩ B = { x | x ∈ A ∧ x ∈ B}
public IntegerSet Difference(IntegerSet)返回set,它是参数与该set的理论差,即,
A-B = {x | x∈A∧x∉B}
例如,如果A = {1,2,3}和B = {3,4,5},则A-B = {1,2},而B-A为{4,5}。
如果此集合和参数集相同,则public boolean equals(IntegerSet)返回true,否则返回false。
有人可以向我解释如何执行此操作。
我已经有一个联合集成员方法。.不能使用哈希集位集或任何高级的东西,因为我们还没有学会它们。
我已经完成了,但是区别和相等的方法不能正常工作
到目前为止,这是我的代码...
class IntegerSet{
private int [] a = new int [100];
public IntegerSet(){
a = new int[100];
}
public void insert(int b){
a[b] = 1;
}
public void delete(int c){
a[c] = 0;
}
public String toString(){
StringBuffer sb = new StringBuffer();
for(int i = 0; i < a.length; i++)
if(a[i] == 1)
sb.append(i + " ");
return sb.toString();
}
public IntegerSet union (IntegerSet d){
IntegerSet s = new IntegerSet();
for(int i = 0; i < a.length; i++)
if(a[i] == 1|| d.a[i] == 1)
s.insert(i);
return s;
}
public IntegerSet intersection(IntegerSet t){
IntegerSet s = new IntegerSet();
for(int i = 0; i < a.length; i++){
if(a[i] == 1 && t.a[i] == 1)
s.insert(i);
}
return s;
}
public IntegerSet difference(IntegerSet p){
IntegerSet s = new IntegerSet();
for(int i = 0; i < a.length; i++){
if(a[i] == 1 && p.a[i] == 0)
s.insert(i);
}
return s;
}
public boolean equals(IntegerSet l){
boolean b = false;
for(int i = 0; i < a.length; i++)
if(a[i] == l.a[i]) {
b = true; }
return b;
}
}
class Assignment1{
public static void main(String [] args){
IntegerSet n1 = new IntegerSet();
n1.insert(7);
n1.insert(8);
n1.insert(3);
n1.insert(1);
n1.insert(4);
System.out.println("Integer Set: " +n1);
IntegerSet n2 = new IntegerSet();
n2.insert(3);
n2.insert(8);
n2.insert(2);
n2.insert(5);
n2.insert(9);
System.out.println("Integer Set: " + n2);
n1.delete(7);
n2.delete(2);
System.out.println("Integer Set: " + n1);
System.out.println("Integer Set: " +n2);
IntegerSet u = n1.union(n2);
System.out.println("Union: " + u);
IntegerSet i = n1.intersection(n2);
System.out.println("Intersection: " + i);
IntegerSet d = n1.difference(n2);
System.out.println("Difference: " + d);
if (n1.equals(n2));
System.out.println(n1 + "is equal to " + n2);
}
}
最佳答案
返回带有内部数组*a'*, where *a'* = *a* intersect *b* such that *a'*[i] = 1 iff *a*[i] == 1 AND *b*[i] == 1.
的新IntegerSet对象