001    /**
002     * Created by IntelliJ IDEA.
003     * User: Wei Wang
004     * Date: Jan 9, 2003
005     * Time: 4:10:32 PM
006     */
007    package EVolve.util.Equators;
008    
009    import java.util.ArrayList;
010    
011    
012    public class OrderedSet extends Set{
013    
014        public OrderedSet() {
015    
016        }
017    
018        public OrderedSet(int interval) {
019            size = interval;
020            data = new int[size];
021            emptySlot = 0;
022            entityNumber = 0;
023            for (int i=0; i<size; i++)
024                data[i] = -1;
025        }
026    
027        public void addElement(int element) {
028            if (emptySlot >= size) {
029                System.out.println("Set is full, unable to add new elements!!!");
030                return;
031            }
032            data[emptySlot] = element;
033            emptySlot++;
034        }
035    
036        public Set intersection(Set set) {
037            ArrayList temp= new ArrayList();
038    
039            for (int i=0; i<size; i++) {
040                if ((data[i]!=-1)&&(!temp.contains(new Integer(data[i])))&&(set.exist(data[i])))
041                    temp.add(new Integer(data[i]));
042            }
043    
044            Set result = new OrderedSet(temp.size());
045            for (int i=0; i<temp.size(); i++) {
046                result.addElement(((Integer)temp.get(i)).intValue());
047            }
048    
049            return result;
050        }
051    
052        public Set union(Set set) {
053            ArrayList temp= new ArrayList();
054    
055            for (int i=0; i<size; i++) {
056                if (!temp.contains(new Integer(data[i])))
057                    temp.add(new Integer(data[i]));
058            }
059    
060            for (int i=0; i<set.size(); i++) {
061                int element = set.getElement(i);
062                if (!temp.contains(new Integer(element)))
063                    temp.add(new Integer(element));
064            }
065    
066            Set result = new OrderedSet(temp.size());
067            for (int i=0; i<temp.size(); i++) {
068                result.addElement(((Integer)temp.get(i)).intValue());
069            }
070    
071            return result;
072        }
073    
074        public boolean exist(int element) {
075            for (int i=0; i<size; i++)
076                if (data[i] == element) return true;
077    
078            return false;
079        }
080    
081        public int getHashValue() {
082            int retVal = data[0];
083            ArrayList temp = new ArrayList();
084            temp.add(new Integer(data[0]));
085            for (int i=1; i<size; i++) {
086                if (!temp.contains(new Integer(data[i])))
087                    retVal = retVal ^ data[i];
088            }
089            temp = null;
090    
091            return retVal;
092        }
093    
094        public Set newSet() {
095            return new OrderedSet(size);
096        }
097    
098        public boolean equals(Set set, float percent) {
099            float counter = 0;
100            int loop = size>set.size() ? set.size() : size;
101    
102            for (int i = 0; i< loop; i++) {
103                if (set.getElement(i) == data[i])
104                    counter ++;
105            }
106    
107            return ((200*counter/(size+set.size())) >= percent) ;
108        }
109    }