51 lines
1.3 KiB
Plaintext
51 lines
1.3 KiB
Plaintext
package speiger.src.collections.PACKAGE.sets;
|
|
|
|
#if TYPE_OBJECT
|
|
import java.util.Objects;
|
|
#endif
|
|
import java.util.Set;
|
|
|
|
import speiger.src.collections.PACKAGE.collections.ABSTRACT_COLLECTION;
|
|
import speiger.src.collections.PACKAGE.collections.ITERATOR;
|
|
|
|
/**
|
|
* Abstract Type Specific Set that reduces boxing/unboxing
|
|
* @Type(T)
|
|
*/
|
|
public abstract class ABSTRACT_SET KEY_GENERIC_TYPE extends ABSTRACT_COLLECTION KEY_GENERIC_TYPE implements SET KEY_GENERIC_TYPE
|
|
{
|
|
#if TYPE_OBJECT
|
|
@Override
|
|
public KEY_TYPE addOrGet(KEY_TYPE o) { throw new UnsupportedOperationException(); }
|
|
|
|
#endif
|
|
@Override
|
|
public abstract ITERATOR KEY_GENERIC_TYPE iterator();
|
|
@Override
|
|
public ABSTRACT_SET KEY_GENERIC_TYPE copy() { throw new UnsupportedOperationException(); }
|
|
|
|
@Override
|
|
public int hashCode() {
|
|
int hashCode = 0;
|
|
ITERATOR KEY_GENERIC_TYPE i = iterator();
|
|
while(i.hasNext())
|
|
hashCode += KEY_TO_HASH(i.NEXT());
|
|
return hashCode;
|
|
}
|
|
|
|
@Override
|
|
public boolean equals(Object o) {
|
|
if (o == this)
|
|
return true;
|
|
if (!(o instanceof Set))
|
|
return false;
|
|
Set<?> l = (Set<?>)o;
|
|
if(l.size() != size()) return false;
|
|
try {
|
|
return containsAll(l);
|
|
} catch (ClassCastException | NullPointerException unused) {
|
|
return false;
|
|
}
|
|
}
|
|
}
|