Fixing some inconsistencies that were found.
This commit is contained in:
1 parent
75c6784ab6
commit
0123cb8937
8 files changed
+95
-103
No files matched your search
@@ -240,13 +240,12 @@ public class AVL_TREE_SET KEY_GENERIC_TYPE extends ABSTRACT_SET KEY_GENERIC_TYPE
|
||||
return findNode(e) != null;
|
||||
}
|
||||
|
||||
#else
|
||||
#endif
|
||||
@Override
|
||||
public boolean contains(Object e) {
|
||||
return findNode((T)e) != null;
|
||||
return findNode(OBJ_TO_KEY(((CLASS_TYPE)e))) != null;
|
||||
}
|
||||
|
||||
#endif
|
||||
@Override
|
||||
public KEY_TYPE FIRST_KEY() {
|
||||
if(tree == null) throw new NoSuchElementException();
|
||||
@@ -271,11 +270,11 @@ public class AVL_TREE_SET KEY_GENERIC_TYPE extends ABSTRACT_SET KEY_GENERIC_TYPE
|
||||
return false;
|
||||
}
|
||||
|
||||
#else
|
||||
#endif
|
||||
@Override
|
||||
public boolean remove(Object o) {
|
||||
if(tree == null) return false;
|
||||
Entry KEY_GENERIC_TYPE entry = findNode((T)o);
|
||||
Entry KEY_GENERIC_TYPE entry = findNode(OBJ_TO_KEY(((CLASS_TYPE)o)));
|
||||
if(entry != null) {
|
||||
removeNode(entry);
|
||||
return true;
|
||||
@@ -283,7 +282,6 @@ public class AVL_TREE_SET KEY_GENERIC_TYPE extends ABSTRACT_SET KEY_GENERIC_TYPE
|
||||
return false;
|
||||
}
|
||||
|
||||
#endif
|
||||
@Override
|
||||
public KEY_TYPE POLL_FIRST_KEY() {
|
||||
if(tree == null) throw new NoSuchElementException();
|
||||
@@ -708,18 +706,19 @@ public class AVL_TREE_SET KEY_GENERIC_TYPE extends ABSTRACT_SET KEY_GENERIC_TYPE
|
||||
return inRange(o) && set.remove(o);
|
||||
}
|
||||
|
||||
#else
|
||||
#endif
|
||||
@Override
|
||||
public boolean contains(Object e) {
|
||||
return inRange((T)e) && set.contains((T)e);
|
||||
KEY_TYPE o = OBJ_TO_KEY(((CLASS_TYPE)e));
|
||||
return inRange(o) && set.contains(o);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean remove(Object o) {
|
||||
return inRange((T)o) && set.remove((T)o);
|
||||
public boolean remove(Object e) {
|
||||
KEY_TYPE o = OBJ_TO_KEY(((CLASS_TYPE)e));
|
||||
return inRange(o) && set.remove(o);
|
||||
}
|
||||
|
||||
#endif
|
||||
@Override
|
||||
public KEY_TYPE lower(KEY_TYPE e) {
|
||||
if(tooHigh(e)) {
|
||||
|
||||
@@ -4,11 +4,9 @@ import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
#if TYPE_OBJECT
|
||||
import java.util.Comparator;
|
||||
#endif
|
||||
import java.util.NoSuchElementException;
|
||||
import java.util.Objects;
|
||||
#else
|
||||
import java.util.NoSuchElementException;
|
||||
#endif
|
||||
import java.util.Set;
|
||||
|
||||
import speiger.src.collections.PACKAGE.collections.BI_ITERATOR;
|
||||
@@ -150,7 +148,7 @@ public class ARRAY_SET KEY_GENERIC_TYPE extends ABSTRACT_SET KEY_GENERIC_TYPE im
|
||||
#else
|
||||
@Override
|
||||
public boolean contains(Object e) {
|
||||
return findIndex((KEY_TYPE)e) != -1;
|
||||
return findIndex(e) != -1;
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -180,7 +178,7 @@ public class ARRAY_SET KEY_GENERIC_TYPE extends ABSTRACT_SET KEY_GENERIC_TYPE im
|
||||
#else
|
||||
@Override
|
||||
public boolean remove(Object o) {
|
||||
int index = findIndex((KEY_TYPE)o);
|
||||
int index = findIndex(o);
|
||||
if(index != -1) {
|
||||
System.arraycopy(data, index+1, data, index, size - index);
|
||||
data[size-1] = EMPTY_VALUE;
|
||||
@@ -213,12 +211,20 @@ public class ARRAY_SET KEY_GENERIC_TYPE extends ABSTRACT_SET KEY_GENERIC_TYPE im
|
||||
#endif
|
||||
}
|
||||
|
||||
#if !TYPE_OBJECT
|
||||
protected int findIndex(KEY_TYPE o) {
|
||||
for(int i = size-1;i>=0;i--)
|
||||
if(EQUALS(data[i], o)) return i;
|
||||
return -1;
|
||||
}
|
||||
|
||||
#endif
|
||||
protected int findIndex(Object o) {
|
||||
for(int i = size-1;i>=0;i--)
|
||||
if(EQUALS_KEY_TYPE(data[i], o)) return i;
|
||||
return -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BI_ITERATOR KEY_GENERIC_TYPE iterator() {
|
||||
return new SetIterator(0);
|
||||
@@ -359,13 +365,12 @@ public class ARRAY_SET KEY_GENERIC_TYPE extends ABSTRACT_SET KEY_GENERIC_TYPE im
|
||||
return findIndex(e) != -1;
|
||||
}
|
||||
|
||||
#else
|
||||
#endif
|
||||
@Override
|
||||
public boolean contains(Object e) {
|
||||
return findIndex((KEY_TYPE)e) != -1;
|
||||
return findIndex(e) != -1;
|
||||
}
|
||||
|
||||
#endif
|
||||
@Override
|
||||
public KEY_TYPE FIRST_KEY() {
|
||||
if(length == 0) throw new NoSuchElementException();
|
||||
@@ -391,10 +396,10 @@ public class ARRAY_SET KEY_GENERIC_TYPE extends ABSTRACT_SET KEY_GENERIC_TYPE im
|
||||
return false;
|
||||
}
|
||||
|
||||
#else
|
||||
#endif
|
||||
@Override
|
||||
public boolean remove(Object o) {
|
||||
int index = findIndex((KEY_TYPE)o);
|
||||
int index = findIndex(o);
|
||||
if(index != -1) {
|
||||
System.arraycopy(data, index+1, data, index, size - index);
|
||||
data[size-1] = EMPTY_VALUE;
|
||||
@@ -405,7 +410,6 @@ public class ARRAY_SET KEY_GENERIC_TYPE extends ABSTRACT_SET KEY_GENERIC_TYPE im
|
||||
return false;
|
||||
}
|
||||
|
||||
#endif
|
||||
@Override
|
||||
public KEY_TYPE POLL_FIRST_KEY() {
|
||||
if(length == 0) throw new NoSuchElementException();
|
||||
@@ -476,9 +480,17 @@ public class ARRAY_SET KEY_GENERIC_TYPE extends ABSTRACT_SET KEY_GENERIC_TYPE im
|
||||
return length;
|
||||
}
|
||||
|
||||
private int findIndex(KEY_TYPE o) {
|
||||
for(int i = length-1;i>=0;i--)
|
||||
if(data[offset+i] == o) return i + offset;
|
||||
#if !TYPE_OBJECT
|
||||
protected int findIndex(KEY_TYPE o) {
|
||||
for(int i = size-1;i>=0;i--)
|
||||
if(EQUALS(data[offset+i], o)) return i + offset;
|
||||
return -1;
|
||||
}
|
||||
|
||||
#endif
|
||||
protected int findIndex(Object o) {
|
||||
for(int i = size-1;i>=0;i--)
|
||||
if(EQUALS_KEY_TYPE(data[offset+i], o)) return i + offset;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,9 +4,7 @@ import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Iterator;
|
||||
import java.util.NoSuchElementException;
|
||||
#if TYPE_OBJECT
|
||||
import java.util.Objects;
|
||||
#endif
|
||||
|
||||
import speiger.src.collections.PACKAGE.collections.COLLECTION;
|
||||
import speiger.src.collections.PACKAGE.collections.ITERATOR;
|
||||
@@ -152,34 +150,33 @@ public class HASH_SET KEY_GENERIC_TYPE extends ABSTRACT_SET KEY_GENERIC_TYPE imp
|
||||
return super.addAll(c);
|
||||
}
|
||||
|
||||
#if TYPE_OBJECT
|
||||
@Override
|
||||
public boolean contains(Object o) {
|
||||
if(EQUALS_NULL(o)) return containsNull;
|
||||
int pos = HashUtil.mix(TO_HASH(o)) & mask;
|
||||
if(o == null) return containsNull;
|
||||
int pos = HashUtil.mix(o.hashCode()) & mask;
|
||||
KEY_TYPE current = keys[pos];
|
||||
if(EQUALS_NULL(current)) return false;
|
||||
if(EQUALS(current, o)) return true;
|
||||
if(EQUALS_KEY_TYPE(current, o)) return true;
|
||||
while(true) {
|
||||
if(EQUALS_NULL((current = keys[++pos & mask]))) return false;
|
||||
else if(EQUALS(current, o)) return true;
|
||||
else if(EQUALS_KEY_TYPE(current, o)) return true;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean remove(Object o) {
|
||||
if(EQUALS_NULL(o)) return (containsNull ? removeNullIndex() : false);
|
||||
int pos = HashUtil.mix(TO_HASH(o)) & mask;
|
||||
if(o == null) return (containsNull ? removeNullIndex() : false);
|
||||
int pos = HashUtil.mix(o.hashCode()) & mask;
|
||||
KEY_TYPE current = keys[pos];
|
||||
if(EQUALS_NULL(current)) return false;
|
||||
if(EQUALS(current, o)) return removeIndex(pos);
|
||||
if(EQUALS_KEY_TYPE(current, o)) return removeIndex(pos);
|
||||
while(true) {
|
||||
if(EQUALS_NULL((current = keys[++pos & mask]))) return false;
|
||||
else if(EQUALS(current, o)) return removeIndex(pos);
|
||||
else if(EQUALS_KEY_TYPE(current, o)) return removeIndex(pos);
|
||||
}
|
||||
}
|
||||
|
||||
#else
|
||||
#if !TYPE_OBJECT
|
||||
@Override
|
||||
public boolean contains(KEY_TYPE o) {
|
||||
if(EQUALS_NULL(o)) return containsNull;
|
||||
|
||||
@@ -240,13 +240,12 @@ public class RB_TREE_SET KEY_GENERIC_TYPE extends ABSTRACT_SET KEY_GENERIC_TYPE
|
||||
return findNode(e) != null;
|
||||
}
|
||||
|
||||
#else
|
||||
#endif
|
||||
@Override
|
||||
public boolean contains(Object e) {
|
||||
return findNode((T)e) != null;
|
||||
return findNode(OBJ_TO_KEY(((CLASS_TYPE)e))) != null;
|
||||
}
|
||||
|
||||
#endif
|
||||
@Override
|
||||
public KEY_TYPE FIRST_KEY() {
|
||||
if(tree == null) throw new NoSuchElementException();
|
||||
@@ -271,11 +270,11 @@ public class RB_TREE_SET KEY_GENERIC_TYPE extends ABSTRACT_SET KEY_GENERIC_TYPE
|
||||
return false;
|
||||
}
|
||||
|
||||
#else
|
||||
#endif
|
||||
@Override
|
||||
public boolean remove(Object o) {
|
||||
if(tree == null) return false;
|
||||
Entry KEY_GENERIC_TYPE entry = findNode((T)o);
|
||||
Entry KEY_GENERIC_TYPE entry = findNode(OBJ_TO_KEY(((CLASS_TYPE)o)));
|
||||
if(entry != null) {
|
||||
removeNode(entry);
|
||||
return true;
|
||||
@@ -283,7 +282,6 @@ public class RB_TREE_SET KEY_GENERIC_TYPE extends ABSTRACT_SET KEY_GENERIC_TYPE
|
||||
return false;
|
||||
}
|
||||
|
||||
#endif
|
||||
@Override
|
||||
public KEY_TYPE POLL_FIRST_KEY() {
|
||||
if(tree == null) throw new NoSuchElementException();
|
||||
@@ -766,18 +764,19 @@ public class RB_TREE_SET KEY_GENERIC_TYPE extends ABSTRACT_SET KEY_GENERIC_TYPE
|
||||
return inRange(o) && set.remove(o);
|
||||
}
|
||||
|
||||
#else
|
||||
#endif
|
||||
@Override
|
||||
public boolean contains(Object e) {
|
||||
return inRange((T)e) && set.contains((T)e);
|
||||
KEY_TYPE o = OBJ_TO_KEY(((CLASS_TYPE)e));
|
||||
return inRange(o) && set.contains(o);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean remove(Object o) {
|
||||
return inRange((T)o) && set.remove((T)o);
|
||||
public boolean remove(Object e) {
|
||||
KEY_TYPE o = OBJ_TO_KEY(((CLASS_TYPE)e));
|
||||
return inRange(o) && set.remove(o);
|
||||
}
|
||||
|
||||
#endif
|
||||
@Override
|
||||
public KEY_TYPE lower(KEY_TYPE e) {
|
||||
if(tooHigh(e)) {
|
||||
|
||||
Reference in new issue
Block a user