我正在尝试编写几个成员方法:

创建类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对象

10-07 19:30