Advertisement
Kulas_Code20

MySetArray

Oct 17th, 2021
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.32 KB | None | 0 0
  1. /**
  2.    MySetArray - array implementation of the MySet interface
  3. */
  4. public class MySetArray implements MySet{
  5.    //define the data container
  6.    private Object[] set;
  7.    public int cardinality; //holds the count of the actual elements in a set
  8.    private int position; //utility variable
  9.    
  10.    //constructors
  11.    public MySetArray(int size)         { this.set=new Object[size];}
  12.    public MySetArray()                 { this(10);} //set default set size to ten(10) elements
  13.    //
  14.    public MySetArray(Object[] items)    {
  15.       this.cardinality=items.length;
  16.       this.set=new Object[cardinality];
  17.       for(int i=0;i<cardinality;i++){
  18.          set[i]=items[i];
  19.       }
  20.    }
  21.    
  22.    
  23.    //sentinel methods
  24.    public boolean isFull()             { return cardinality==set.length; }
  25.    public boolean isEmpty()            { return cardinality==0;}
  26.    //utility methods
  27.    public boolean isElement(Object item){ //test if an item is in the container
  28.       boolean found=false;
  29.          if(!isEmpty()){
  30.             //use sequential search
  31.             for(int i=0;i<cardinality;i++){
  32.                if(item.equals(set[i])){
  33.                   position=i;
  34.                   found=true;
  35.                   break;
  36.                }      
  37.             }
  38.          }
  39.       return found;
  40.    }
  41.    public boolean addElement(Object item){
  42.       boolean ok=!isFull() && !isElement(item);
  43.          if(ok){
  44.             set[cardinality++]=item;
  45.          }
  46.       return ok;
  47.    }
  48.    public boolean deleteElement(Object item){
  49.       boolean ok=isElement(item);
  50.          if(ok){
  51.             // set[position]=set[cardinality-1];
  52. //             set[--cardinality]=null;
  53.             set[position]=set[--cardinality];
  54.          }
  55.       return ok;
  56.    }
  57.    //allowable operations
  58.    public MySet union(MySet parset){
  59.       MySetArray sset=(MySetArray)parset;
  60.       int size=cardinality+sset.cardinality;
  61.       //create a result set
  62.       MySet result=new MySetArray(size);
  63.       //populate the result set, using the current set values
  64.       for(int i=0;i<cardinality;result.addElement(set[i]),i++);
  65.       //populate the result set, using the parameter set values
  66.       java.util.StringTokenizer st=new java.util.StringTokenizer(sset.toString(),"{},");
  67.       for(;st.hasMoreTokens();result.addElement(st.nextToken()));
  68.       // for(;st.hasMoreTokens();){
  69. //          result.addElement(st.nextToken());
  70. //       }
  71.       return result;
  72.    }  
  73.    public MySet intersect(MySet parset)   {
  74.       MySetArray sset=(MySetArray)parset;
  75.       int size=(cardinality>sset.cardinality)?cardinality:sset.cardinality;
  76.       MySet result=new MySetArray(size);
  77.          for(int i=0;i<cardinality;i++){
  78.             if(sset.isElement(set[i]))
  79.                result.addElement(set[i]);
  80.          }
  81.       return result;
  82.    }
  83.    public MySet difference(MySet parset)  {
  84.       MySetArray sset=(MySetArray)parset;
  85.       int size=(cardinality>sset.cardinality)?cardinality:sset.cardinality;
  86.       MySet result=new MySetArray(size);
  87.          for(int i=0;i<cardinality;i++){
  88.             if(!sset.isElement(set[i]))
  89.                result.addElement(set[i]);
  90.          }
  91.       return result;
  92.    }
  93.    public MySet crossproduct(MySet parset){
  94.       MySetArray sset=(MySetArray)parset;
  95.       String[] par_array=new String[sset.cardinality];
  96.       //
  97.       int size=cardinality*sset.cardinality;
  98.       MySet result=new MySetArray(size);
  99.       java.util.StringTokenizer st=new java.util.StringTokenizer(sset.toString(),"{},");
  100.       for(int i=0;st.hasMoreTokens();par_array[i++]=st.nextToken());
  101.  
  102.          for(int i=0;i<cardinality;i++){
  103.             for(int j=0;j<sset.cardinality;j++){
  104.                //temp MySet object with max of 2 elements
  105.                MySetArray temp=new MySetArray(2);
  106.                   temp.addElement(set[i]);
  107.                   temp.addElement(par_array[j]);
  108.                   if(temp.cardinality==2)
  109.                      result.addElement(temp);
  110.             }
  111.          }
  112.       return result;
  113.    }
  114.    //
  115.    public String toString(){
  116.       StringBuffer sb=new StringBuffer();
  117.          sb.append("{");
  118.             for(int i=0;i<cardinality;i++){
  119.                sb.append(set[i]);
  120.                if(i<cardinality-1)
  121.                   sb.append(",");
  122.             }
  123.          sb.append("}");
  124.       return sb.toString();
  125.    }
  126.    
  127. }//end of class
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement