Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- MySetArray - array implementation of the MySet interface
- */
- public class MySetArray implements MySet{
- //define the data container
- private Object[] set;
- public int cardinality; //holds the count of the actual elements in a set
- private int position; //utility variable
- //constructors
- public MySetArray(int size) { this.set=new Object[size];}
- public MySetArray() { this(10);} //set default set size to ten(10) elements
- //
- public MySetArray(Object[] items) {
- this.cardinality=items.length;
- this.set=new Object[cardinality];
- for(int i=0;i<cardinality;i++){
- set[i]=items[i];
- }
- }
- //sentinel methods
- public boolean isFull() { return cardinality==set.length; }
- public boolean isEmpty() { return cardinality==0;}
- //utility methods
- public boolean isElement(Object item){ //test if an item is in the container
- boolean found=false;
- if(!isEmpty()){
- //use sequential search
- for(int i=0;i<cardinality;i++){
- if(item.equals(set[i])){
- position=i;
- found=true;
- break;
- }
- }
- }
- return found;
- }
- public boolean addElement(Object item){
- boolean ok=!isFull() && !isElement(item);
- if(ok){
- set[cardinality++]=item;
- }
- return ok;
- }
- public boolean deleteElement(Object item){
- boolean ok=isElement(item);
- if(ok){
- // set[position]=set[cardinality-1];
- // set[--cardinality]=null;
- set[position]=set[--cardinality];
- }
- return ok;
- }
- //allowable operations
- public MySet union(MySet parset){
- MySetArray sset=(MySetArray)parset;
- int size=cardinality+sset.cardinality;
- //create a result set
- MySet result=new MySetArray(size);
- //populate the result set, using the current set values
- for(int i=0;i<cardinality;result.addElement(set[i]),i++);
- //populate the result set, using the parameter set values
- java.util.StringTokenizer st=new java.util.StringTokenizer(sset.toString(),"{},");
- for(;st.hasMoreTokens();result.addElement(st.nextToken()));
- // for(;st.hasMoreTokens();){
- // result.addElement(st.nextToken());
- // }
- return result;
- }
- public MySet intersect(MySet parset) {
- MySetArray sset=(MySetArray)parset;
- int size=(cardinality>sset.cardinality)?cardinality:sset.cardinality;
- MySet result=new MySetArray(size);
- for(int i=0;i<cardinality;i++){
- if(sset.isElement(set[i]))
- result.addElement(set[i]);
- }
- return result;
- }
- public MySet difference(MySet parset) {
- MySetArray sset=(MySetArray)parset;
- int size=(cardinality>sset.cardinality)?cardinality:sset.cardinality;
- MySet result=new MySetArray(size);
- for(int i=0;i<cardinality;i++){
- if(!sset.isElement(set[i]))
- result.addElement(set[i]);
- }
- return result;
- }
- public MySet crossproduct(MySet parset){
- MySetArray sset=(MySetArray)parset;
- String[] par_array=new String[sset.cardinality];
- //
- int size=cardinality*sset.cardinality;
- MySet result=new MySetArray(size);
- java.util.StringTokenizer st=new java.util.StringTokenizer(sset.toString(),"{},");
- for(int i=0;st.hasMoreTokens();par_array[i++]=st.nextToken());
- for(int i=0;i<cardinality;i++){
- for(int j=0;j<sset.cardinality;j++){
- //temp MySet object with max of 2 elements
- MySetArray temp=new MySetArray(2);
- temp.addElement(set[i]);
- temp.addElement(par_array[j]);
- if(temp.cardinality==2)
- result.addElement(temp);
- }
- }
- return result;
- }
- //
- public String toString(){
- StringBuffer sb=new StringBuffer();
- sb.append("{");
- for(int i=0;i<cardinality;i++){
- sb.append(set[i]);
- if(i<cardinality-1)
- sb.append(",");
- }
- sb.append("}");
- return sb.toString();
- }
- }//end of class
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement