forked from Speiger/Primitive-Collections
85 lines
2.1 KiB
Plaintext
85 lines
2.1 KiB
Plaintext
package speiger.src.collections.PACKAGE.collections;
|
|
|
|
import java.util.Collection;
|
|
#if PRIMITIVES
|
|
import java.util.Objects;
|
|
import java.util.function.JAVA_PREDICATE;
|
|
import java.util.function.Predicate;
|
|
#endif
|
|
|
|
#if TYPE_BYTE || TYPE_SHORT || TYPE_CHAR || TYPE_FLOAT
|
|
import speiger.src.collections.utils.SanityChecks;
|
|
|
|
#endif
|
|
public interface COLLECTION KEY_GENERIC_TYPE extends Collection<CLASS_TYPE>, ITERABLE KEY_GENERIC_TYPE
|
|
{
|
|
#if !TYPE_OBJECT
|
|
public boolean add(KEY_TYPE o);
|
|
|
|
#endif
|
|
public boolean addAll(COLLECTION KEY_GENERIC_TYPE c);
|
|
|
|
#if !TYPE_OBJECT
|
|
public boolean contains(KEY_TYPE o);
|
|
|
|
#endif
|
|
public boolean containsAll(COLLECTION KEY_GENERIC_TYPE c);
|
|
|
|
public boolean containsAny(COLLECTION KEY_GENERIC_TYPE c);
|
|
|
|
public boolean containsAny(Collection<?> c);
|
|
|
|
#if !TYPE_OBJECT
|
|
public boolean REMOVE_KEY(KEY_TYPE o);
|
|
|
|
#endif
|
|
public boolean removeAll(COLLECTION KEY_GENERIC_TYPE c);
|
|
|
|
public boolean retainAll(COLLECTION KEY_GENERIC_TYPE c);
|
|
|
|
#if !TYPE_OBJECT
|
|
public KEY_TYPE[] TO_ARRAY();
|
|
|
|
public KEY_TYPE[] TO_ARRAY(KEY_TYPE[] a);
|
|
|
|
#if PRIMITIVES
|
|
@Override
|
|
public default boolean removeIf(Predicate<? super CLASS_TYPE> filter) {
|
|
Objects.requireNonNull(filter);
|
|
#if TYPE_BYTE || TYPE_SHORT || TYPE_CHAR || TYPE_FLOAT
|
|
return remIf(v -> filter.test(KEY_TO_OBJ(SanityChecks.SANITY_CAST(v))));
|
|
#else
|
|
return remIf(v -> filter.test(KEY_TO_OBJ(v)));
|
|
#endif
|
|
}
|
|
|
|
public default boolean remIf(JAVA_PREDICATE filter) {
|
|
Objects.requireNonNull(filter);
|
|
boolean removed = false;
|
|
final ITERATOR each = iterator();
|
|
while (each.hasNext()) {
|
|
if (filter.test(each.NEXT())) {
|
|
each.remove();
|
|
removed = true;
|
|
}
|
|
}
|
|
return removed;
|
|
}
|
|
|
|
#endif
|
|
@Override
|
|
@Deprecated
|
|
public default boolean add(CLASS_TYPE o) { return add(OBJ_TO_KEY(o)); }
|
|
|
|
@Override
|
|
@Deprecated
|
|
public default boolean contains(Object o) { return o != null && contains(CLASS_TO_KEY(o)); }
|
|
|
|
@Override
|
|
@Deprecated
|
|
public default boolean remove(Object o) { return o != null && REMOVE_KEY(CLASS_TO_KEY(o)); }
|
|
|
|
#endif
|
|
@Override
|
|
public ITERATOR KEY_GENERIC_TYPE iterator();
|
|
} |