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 }