More Work done on the Collections.
-Added: Empty/Synchronized/Unmodifiable Collections/Lists/Iterators -Changed: ObjectCollections now have more bulk Methods -Added: IArray for functions that would only apply to arrays.
This commit is contained in:
		
							parent
							
								
									0c53fbab6b
								
							
						
					
					
						commit
						8d079ae0ab
					
				@ -32,7 +32,9 @@ public class GlobalVariables
 | 
				
			|||||||
		addSimpleMapper("KEY_TYPE", type.getKeyType());
 | 
							addSimpleMapper("KEY_TYPE", type.getKeyType());
 | 
				
			||||||
		addSimpleMapper("EMPTY_VALUE", type.getEmptyValue());
 | 
							addSimpleMapper("EMPTY_VALUE", type.getEmptyValue());
 | 
				
			||||||
		addSimpleMapper(" KEY_GENERIC_TYPE", type.isObject() ? "<"+type.getKeyType()+">" : "");
 | 
							addSimpleMapper(" KEY_GENERIC_TYPE", type.isObject() ? "<"+type.getKeyType()+">" : "");
 | 
				
			||||||
 | 
							addSimpleMapper(" NO_GENERIC_TYPE", type.isObject() ? "<?>" : "");
 | 
				
			||||||
		addSimpleMapper(" KEY_COMPAREABLE_TYPE", type.isObject() ? "<"+type.getKeyType()+" extends Comparable<T>>" : "");
 | 
							addSimpleMapper(" KEY_COMPAREABLE_TYPE", type.isObject() ? "<"+type.getKeyType()+" extends Comparable<T>>" : "");
 | 
				
			||||||
 | 
							addSimpleMapper(" KEY_SUPER_GENERIC_TYPE", type.isObject() ? "<? super "+type.getKeyType()+">" : "");
 | 
				
			||||||
		addSimpleMapper(" GENERIC_BRACES", type.isObject() ? " <"+type.getKeyType()+">" : "");
 | 
							addSimpleMapper(" GENERIC_BRACES", type.isObject() ? " <"+type.getKeyType()+">" : "");
 | 
				
			||||||
		addSimpleMapper(" COMPAREABLE_BRACES", type.isObject() ? " <"+type.getKeyType()+" extends Comparable<T>>" : "");
 | 
							addSimpleMapper(" COMPAREABLE_BRACES", type.isObject() ? " <"+type.getKeyType()+" extends Comparable<T>>" : "");
 | 
				
			||||||
		addSimpleMapper("BRACES", type.isObject() ? "<>" : "");
 | 
							addSimpleMapper("BRACES", type.isObject() ? "<>" : "");
 | 
				
			||||||
@ -61,16 +63,18 @@ public class GlobalVariables
 | 
				
			|||||||
	{
 | 
						{
 | 
				
			||||||
		addSimpleMapper("JAVA_PREDICATE", type.isPrimitiveBlocking() ? "" : type.getCustomJDKType().getFileType()+"Predicate");
 | 
							addSimpleMapper("JAVA_PREDICATE", type.isPrimitiveBlocking() ? "" : type.getCustomJDKType().getFileType()+"Predicate");
 | 
				
			||||||
		addSimpleMapper("JAVA_CONSUMER", type.isPrimitiveBlocking() ? "" : "java.util.function."+type.getCustomJDKType().getFileType()+"Consumer");
 | 
							addSimpleMapper("JAVA_CONSUMER", type.isPrimitiveBlocking() ? "" : "java.util.function."+type.getCustomJDKType().getFileType()+"Consumer");
 | 
				
			||||||
		addSimpleMapper("UNARY_OPERATOR", type.isPrimitiveBlocking() ? "" : type == ClassType.BOOLEAN ? "BinaryOperator" : type.getCustomJDKType().getFileType()+"UnaryOperator");
 | 
							addSimpleMapper("UNARY_OPERATOR", type.isObject() ? "" : type == ClassType.BOOLEAN ? "BinaryOperator" : type.getCustomJDKType().getFileType()+"UnaryOperator");
 | 
				
			||||||
		if(type.isObject())
 | 
							if(type.isObject())
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			addSimpleMapper("CONSUMER", "Consumer");
 | 
								addSimpleMapper("CONSUMER", "Consumer");
 | 
				
			||||||
			addSimpleMapper("COMPARATOR", "Comparator");	
 | 
								addSimpleMapper("COMPARATOR", "Comparator");	
 | 
				
			||||||
 | 
								addSimpleMapper("IARRAY", "IObjectArray");
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			addClassMapper("CONSUMER", "Consumer");
 | 
								addClassMapper("CONSUMER", "Consumer");
 | 
				
			||||||
			addClassMapper("COMPARATOR", "Comparator");
 | 
								addClassMapper("COMPARATOR", "Comparator");
 | 
				
			||||||
 | 
								addFunctionMappers("IARRAY", "I%sArray");
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		addClassMapper("ITERATORS", "Iterators");
 | 
							addClassMapper("ITERATORS", "Iterators");
 | 
				
			||||||
		addClassMapper("BI_ITERATOR", "BidirectionalIterator");
 | 
							addClassMapper("BI_ITERATOR", "BidirectionalIterator");
 | 
				
			||||||
@ -78,10 +82,12 @@ public class GlobalVariables
 | 
				
			|||||||
		addClassMapper("ITERATOR", "Iterator");
 | 
							addClassMapper("ITERATOR", "Iterator");
 | 
				
			||||||
		addClassMapper("ITERABLE", "Iterable");
 | 
							addClassMapper("ITERABLE", "Iterable");
 | 
				
			||||||
		addClassMapper("ABSTRACT_COLLECTION", "AbstractCollection");
 | 
							addClassMapper("ABSTRACT_COLLECTION", "AbstractCollection");
 | 
				
			||||||
 | 
							addClassMapper("COLLECTIONS", "Collections");
 | 
				
			||||||
		addClassMapper("COLLECTION", "Collection");
 | 
							addClassMapper("COLLECTION", "Collection");
 | 
				
			||||||
		addClassMapper("ARRAYS", "Arrays");
 | 
							addClassMapper("ARRAYS", "Arrays");
 | 
				
			||||||
		addClassMapper("ABSTRACT_LIST", "AbstractList");
 | 
							addClassMapper("ABSTRACT_LIST", "AbstractList");
 | 
				
			||||||
		addClassMapper("LIST_ITER", "ListIter");
 | 
							addClassMapper("LIST_ITER", "ListIter");
 | 
				
			||||||
 | 
							addClassMapper("LISTS", "Lists");
 | 
				
			||||||
		addClassMapper("SUB_LIST", "SubList");
 | 
							addClassMapper("SUB_LIST", "SubList");
 | 
				
			||||||
		addClassMapper("ARRAY_LIST", "ArrayList");
 | 
							addClassMapper("ARRAY_LIST", "ArrayList");
 | 
				
			||||||
		addClassMapper("LIST", "List");
 | 
							addClassMapper("LIST", "List");
 | 
				
			||||||
@ -102,6 +108,7 @@ public class GlobalVariables
 | 
				
			|||||||
		addFunctionMapper("PUSH", "push");
 | 
							addFunctionMapper("PUSH", "push");
 | 
				
			||||||
		addFunctionMapper("TOP", "top");
 | 
							addFunctionMapper("TOP", "top");
 | 
				
			||||||
		addFunctionMappers("REPLACE", "replace%ss");
 | 
							addFunctionMappers("REPLACE", "replace%ss");
 | 
				
			||||||
 | 
							addFunctionMappers("SORT", "sort%ss");
 | 
				
			||||||
		return this;
 | 
							return this;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
@ -121,7 +128,7 @@ public class GlobalVariables
 | 
				
			|||||||
	
 | 
						
 | 
				
			||||||
	public TemplateProcess create(String fileName)
 | 
						public TemplateProcess create(String fileName)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		TemplateProcess process = new TemplateProcess(type.getFileType()+fileName+".java");
 | 
							TemplateProcess process = new TemplateProcess(String.format(fileName+".java", type.getFileType()));
 | 
				
			||||||
		process.setPathBuilder(new PathBuilder(type.getPathType()));
 | 
							process.setPathBuilder(new PathBuilder(type.getPathType()));
 | 
				
			||||||
		process.addFlags(flags);
 | 
							process.addFlags(flags);
 | 
				
			||||||
		process.addMappers(operators);
 | 
							process.addMappers(operators);
 | 
				
			||||||
 | 
				
			|||||||
@ -16,9 +16,11 @@ import speiger.src.builder.processor.TemplateProcessor;
 | 
				
			|||||||
public class TestBuilder extends TemplateProcessor
 | 
					public class TestBuilder extends TemplateProcessor
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	Map<String, EnumSet<ClassType>> blocked = new HashMap<String, EnumSet<ClassType>>();
 | 
						Map<String, EnumSet<ClassType>> blocked = new HashMap<String, EnumSet<ClassType>>();
 | 
				
			||||||
 | 
						Map<String, String> nameRemapper = new HashMap<String, String>();
 | 
				
			||||||
	public static final ClassType[] TYPE = ClassType.values();
 | 
						public static final ClassType[] TYPE = ClassType.values();
 | 
				
			||||||
	List<GlobalVariables> varibles = new ArrayList<GlobalVariables>();
 | 
						List<GlobalVariables> varibles = new ArrayList<GlobalVariables>();
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	public TestBuilder()
 | 
						public TestBuilder()
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		super(Paths.get("src\\main\\resources\\speiger\\assets\\collections\\templates\\"), Paths.get("src\\main\\java\\speiger\\src\\collections\\"), Paths.get("src\\main\\resources\\speiger\\assets\\collections\\"));
 | 
							super(Paths.get("src\\main\\resources\\speiger\\assets\\collections\\templates\\"), Paths.get("src\\main\\java\\speiger\\src\\collections\\"), Paths.get("src\\main\\resources\\speiger\\assets\\collections\\"));
 | 
				
			||||||
@ -50,6 +52,7 @@ public class TestBuilder extends TemplateProcessor
 | 
				
			|||||||
			type.createFunctions();
 | 
								type.createFunctions();
 | 
				
			||||||
			varibles.add(type);
 | 
								varibles.add(type);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
							nameRemapper.put("IArray", "I%sArray");
 | 
				
			||||||
		blocked.put("Consumer", EnumSet.of(ClassType.OBJECT));
 | 
							blocked.put("Consumer", EnumSet.of(ClassType.OBJECT));
 | 
				
			||||||
		blocked.put("Comparator", EnumSet.of(ClassType.OBJECT));
 | 
							blocked.put("Comparator", EnumSet.of(ClassType.OBJECT));
 | 
				
			||||||
		blocked.put("Stack", EnumSet.of(ClassType.OBJECT));
 | 
							blocked.put("Stack", EnumSet.of(ClassType.OBJECT));
 | 
				
			||||||
@ -64,7 +67,7 @@ public class TestBuilder extends TemplateProcessor
 | 
				
			|||||||
			GlobalVariables type = varibles.get(i);
 | 
								GlobalVariables type = varibles.get(i);
 | 
				
			||||||
			if(types == null || !types.contains(type.getType()))
 | 
								if(types == null || !types.contains(type.getType()))
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				acceptor.accept(type.create(name));				
 | 
									acceptor.accept(type.create(nameRemapper.getOrDefault(name, "%s"+name)));
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
				
			|||||||
@ -39,51 +39,43 @@ public abstract class ABSTRACT_COLLECTION KEY_GENERIC_TYPE extends AbstractColle
 | 
				
			|||||||
		return false;
 | 
							return false;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
	@Override
 | 
						@Override
 | 
				
			||||||
	@Deprecated
 | 
						@Deprecated
 | 
				
			||||||
	public boolean containsAll(Collection<?> c)
 | 
						public boolean containsAll(Collection<?> c)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		return c instanceof COLLECTION ? containsAll((COLLECTION)c) : super.containsAll(c);
 | 
							return c instanceof COLLECTION ? containsAll((COLLECTION KEY_GENERIC_TYPE)c) : super.containsAll(c);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	@Override
 | 
						@Override
 | 
				
			||||||
	@Deprecated
 | 
						@Deprecated
 | 
				
			||||||
	public boolean addAll(Collection<? extends CLASS_TYPE> c)
 | 
						public boolean addAll(Collection<? extends CLASS_TYPE> c)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		return c instanceof COLLECTION ? addAll((COLLECTION)c) : super.addAll(c);
 | 
							return c instanceof COLLECTION ? addAll((COLLECTION KEY_GENERIC_TYPE)c) : super.addAll(c);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	@Override
 | 
						@Override
 | 
				
			||||||
	@Deprecated
 | 
						@Deprecated
 | 
				
			||||||
	public boolean removeAll(Collection<?> c)
 | 
						public boolean removeAll(Collection<?> c)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		return c instanceof COLLECTION ? removeAll((COLLECTION)c) : super.removeAll(c);
 | 
							return c instanceof COLLECTION ? removeAll((COLLECTION KEY_GENERIC_TYPE)c) : super.removeAll(c);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	@Override
 | 
						@Override
 | 
				
			||||||
	@Deprecated
 | 
						@Deprecated
 | 
				
			||||||
	public boolean retainAll(Collection<?> c)
 | 
						public boolean retainAll(Collection<?> c)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		return c instanceof COLLECTION ? retainAll((COLLECTION)c) : super.retainAll(c);
 | 
							return c instanceof COLLECTION ? retainAll((COLLECTION KEY_GENERIC_TYPE)c) : super.retainAll(c);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	@Override
 | 
						@Override
 | 
				
			||||||
	public boolean containsAll(COLLECTION c) {
 | 
						public boolean containsAll(COLLECTION KEY_GENERIC_TYPE c) {
 | 
				
			||||||
		for(KEY_TYPE e : c)
 | 
							for(KEY_TYPE e : c)
 | 
				
			||||||
			if(!contains(e))
 | 
								if(!contains(e))
 | 
				
			||||||
				return false;
 | 
									return false;
 | 
				
			||||||
		return true;
 | 
							return true;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	@Override
 | 
					 | 
				
			||||||
	public boolean containsAny(COLLECTION c) {
 | 
					 | 
				
			||||||
		for(KEY_TYPE e : c) 
 | 
					 | 
				
			||||||
			if(contains(e))
 | 
					 | 
				
			||||||
				return true;
 | 
					 | 
				
			||||||
		return false;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
	@Override
 | 
						@Override
 | 
				
			||||||
	@Primitive
 | 
						@Primitive
 | 
				
			||||||
	public boolean containsAny(Collection<?> c) {
 | 
						public boolean containsAny(Collection<?> c) {
 | 
				
			||||||
@ -93,6 +85,14 @@ public abstract class ABSTRACT_COLLECTION KEY_GENERIC_TYPE extends AbstractColle
 | 
				
			|||||||
		return false;
 | 
							return false;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public boolean containsAny(COLLECTION KEY_GENERIC_TYPE c) {
 | 
				
			||||||
 | 
							for(KEY_TYPE e : c) 
 | 
				
			||||||
 | 
								if(contains(e))
 | 
				
			||||||
 | 
									return true;
 | 
				
			||||||
 | 
							return false;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
#if !TYPE_OBJECT
 | 
					#if !TYPE_OBJECT
 | 
				
			||||||
	@Override
 | 
						@Override
 | 
				
			||||||
	@Deprecated
 | 
						@Deprecated
 | 
				
			||||||
@ -100,7 +100,7 @@ public abstract class ABSTRACT_COLLECTION KEY_GENERIC_TYPE extends AbstractColle
 | 
				
			|||||||
	
 | 
						
 | 
				
			||||||
	@Override
 | 
						@Override
 | 
				
			||||||
	public boolean REMOVE_KEY(KEY_TYPE e) {
 | 
						public boolean REMOVE_KEY(KEY_TYPE e) {
 | 
				
			||||||
		for(ITERATOR iter = iterator();iter.hasNext();) {
 | 
							for(ITERATOR KEY_GENERIC_TYPE iter = iterator();iter.hasNext();) {
 | 
				
			||||||
			if(EQUALS(iter.NEXT(), e)) {
 | 
								if(EQUALS(iter.NEXT(), e)) {
 | 
				
			||||||
				iter.remove();
 | 
									iter.remove();
 | 
				
			||||||
				return true;
 | 
									return true;
 | 
				
			||||||
@ -109,10 +109,11 @@ public abstract class ABSTRACT_COLLECTION KEY_GENERIC_TYPE extends AbstractColle
 | 
				
			|||||||
		return false;
 | 
							return false;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
	@Override
 | 
						@Override
 | 
				
			||||||
	public boolean removeAll(COLLECTION c) {
 | 
						public boolean removeAll(COLLECTION KEY_GENERIC_TYPE c) {
 | 
				
			||||||
		boolean modified = false;
 | 
							boolean modified = false;
 | 
				
			||||||
		for(ITERATOR iter = iterator();iter.hasNext();) {
 | 
							for(ITERATOR KEY_GENERIC_TYPE iter = iterator();iter.hasNext();) {
 | 
				
			||||||
			if(c.contains(iter.NEXT())) {
 | 
								if(c.contains(iter.NEXT())) {
 | 
				
			||||||
				iter.remove();
 | 
									iter.remove();
 | 
				
			||||||
				modified = true;
 | 
									modified = true;
 | 
				
			||||||
@ -122,9 +123,9 @@ public abstract class ABSTRACT_COLLECTION KEY_GENERIC_TYPE extends AbstractColle
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	@Override
 | 
						@Override
 | 
				
			||||||
	public boolean retainAll(COLLECTION c) {
 | 
						public boolean retainAll(COLLECTION KEY_GENERIC_TYPE c) {
 | 
				
			||||||
		boolean modified = false;
 | 
							boolean modified = false;
 | 
				
			||||||
		for(ITERATOR iter = iterator();iter.hasNext();) {
 | 
							for(ITERATOR KEY_GENERIC_TYPE iter = iterator();iter.hasNext();) {
 | 
				
			||||||
			if(!c.contains(iter.NEXT())) {
 | 
								if(!c.contains(iter.NEXT())) {
 | 
				
			||||||
				iter.remove();
 | 
									iter.remove();
 | 
				
			||||||
				modified = true;
 | 
									modified = true;
 | 
				
			||||||
@ -133,6 +134,7 @@ public abstract class ABSTRACT_COLLECTION KEY_GENERIC_TYPE extends AbstractColle
 | 
				
			|||||||
		return modified;
 | 
							return modified;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
					#if !TYPE_OBJECT
 | 
				
			||||||
	@Override
 | 
						@Override
 | 
				
			||||||
	public KEY_TYPE[] TO_ARRAY() {
 | 
						public KEY_TYPE[] TO_ARRAY() {
 | 
				
			||||||
		return TO_ARRAY(new KEY_TYPE[size()]);
 | 
							return TO_ARRAY(new KEY_TYPE[size()]);
 | 
				
			||||||
 | 
				
			|||||||
@ -4,8 +4,13 @@ import java.util.Collection;
 | 
				
			|||||||
#if PRIMITIVES
 | 
					#if PRIMITIVES
 | 
				
			||||||
import java.util.Objects;
 | 
					import java.util.Objects;
 | 
				
			||||||
import java.util.function.JAVA_PREDICATE;
 | 
					import java.util.function.JAVA_PREDICATE;
 | 
				
			||||||
 | 
					import java.util.function.Predicate;
 | 
				
			||||||
#endif
 | 
					#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
 | 
					public interface COLLECTION KEY_GENERIC_TYPE extends Collection<CLASS_TYPE>, ITERABLE KEY_GENERIC_TYPE
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
#if !TYPE_OBJECT
 | 
					#if !TYPE_OBJECT
 | 
				
			||||||
@ -17,25 +22,37 @@ public interface COLLECTION KEY_GENERIC_TYPE extends Collection<CLASS_TYPE>, ITE
 | 
				
			|||||||
#if !TYPE_OBJECT
 | 
					#if !TYPE_OBJECT
 | 
				
			||||||
	public boolean contains(KEY_TYPE o);
 | 
						public boolean contains(KEY_TYPE o);
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public boolean containsAll(COLLECTION c);
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
	public boolean containsAny(COLLECTION c);
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
						public boolean containsAll(COLLECTION KEY_GENERIC_TYPE c);
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
						public boolean containsAny(COLLECTION KEY_GENERIC_TYPE c);
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	public boolean containsAny(Collection<?> c);
 | 
						public boolean containsAny(Collection<?> c);
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
#if !TYPE_OBJECT
 | 
					#if !TYPE_OBJECT
 | 
				
			||||||
	public boolean REMOVE_KEY(KEY_TYPE o);
 | 
						public boolean REMOVE_KEY(KEY_TYPE o);
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public boolean removeAll(COLLECTION c);
 | 
					#endif
 | 
				
			||||||
 | 
						public boolean removeAll(COLLECTION KEY_GENERIC_TYPE c);
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public boolean retainAll(COLLECTION c);
 | 
						public boolean retainAll(COLLECTION KEY_GENERIC_TYPE c);
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
					#if !TYPE_OBJECT
 | 
				
			||||||
	public KEY_TYPE[] TO_ARRAY();
 | 
						public KEY_TYPE[] TO_ARRAY();
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public KEY_TYPE[] TO_ARRAY(KEY_TYPE[] a);
 | 
						public KEY_TYPE[] TO_ARRAY(KEY_TYPE[] a);
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
#if PRIMITIVES
 | 
					#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) {
 | 
						public default boolean remIf(JAVA_PREDICATE filter) {
 | 
				
			||||||
    	Objects.requireNonNull(filter);
 | 
					    	Objects.requireNonNull(filter);
 | 
				
			||||||
    	boolean removed = false;
 | 
					    	boolean removed = false;
 | 
				
			||||||
 | 
				
			|||||||
@ -18,6 +18,11 @@ public abstract class ABSTRACT_LIST KEY_GENERIC_TYPE extends ABSTRACT_COLLECTION
 | 
				
			|||||||
		return true;
 | 
							return true;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public void add(int index, CLASS_TYPE element) {
 | 
				
			||||||
 | 
							add(index, OBJ_TO_KEY(element));
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	@Override
 | 
						@Override
 | 
				
			||||||
	public boolean addAll(COLLECTION c) {
 | 
						public boolean addAll(COLLECTION c) {
 | 
				
			||||||
		boolean modified = false;
 | 
							boolean modified = false;
 | 
				
			||||||
@ -188,13 +193,6 @@ public abstract class ABSTRACT_LIST KEY_GENERIC_TYPE extends ABSTRACT_COLLECTION
 | 
				
			|||||||
			size++;
 | 
								size++;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
#if !TYPE_OBJECT		
 | 
					 | 
				
			||||||
		@Override
 | 
					 | 
				
			||||||
		public void add(int index, CLASS_TYPE element) {
 | 
					 | 
				
			||||||
			add(index, OBJ_TO_KEY(element));
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
		@Override
 | 
							@Override
 | 
				
			||||||
		public boolean addAll(int index, Collection<? extends CLASS_TYPE> c) {
 | 
							public boolean addAll(int index, Collection<? extends CLASS_TYPE> c) {
 | 
				
			||||||
			checkAddRange(index);
 | 
								checkAddRange(index);
 | 
				
			||||||
 | 
				
			|||||||
@ -1,12 +1,20 @@
 | 
				
			|||||||
package speiger.src.collections.PACKAGE.lists;
 | 
					package speiger.src.collections.PACKAGE.lists;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.Arrays;
 | 
					import java.util.Arrays;
 | 
				
			||||||
 | 
					#if TYPE_OBJECT
 | 
				
			||||||
 | 
					import java.util.Comparator;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
import java.util.Collection;
 | 
					import java.util.Collection;
 | 
				
			||||||
import java.util.Iterator;
 | 
					import java.util.Iterator;
 | 
				
			||||||
import java.util.Objects;
 | 
					import java.util.Objects;
 | 
				
			||||||
 | 
					#if TYPE_OBJECT
 | 
				
			||||||
 | 
					import java.util.function.Consumer;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
import java.util.function.Predicate;
 | 
					import java.util.function.Predicate;
 | 
				
			||||||
 | 
					import java.util.function.UnaryOperator;
 | 
				
			||||||
#if PRIMITIVES
 | 
					#if PRIMITIVES
 | 
				
			||||||
import java.util.function.JAVA_PREDICATE;
 | 
					import java.util.function.JAVA_PREDICATE;
 | 
				
			||||||
 | 
					import java.util.function.UNARY_OPERATOR;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import speiger.src.collections.PACKAGE.collections.COLLECTION;
 | 
					import speiger.src.collections.PACKAGE.collections.COLLECTION;
 | 
				
			||||||
@ -14,6 +22,10 @@ import speiger.src.collections.PACKAGE.collections.COLLECTION;
 | 
				
			|||||||
import speiger.src.collections.PACKAGE.collections.STACK;
 | 
					import speiger.src.collections.PACKAGE.collections.STACK;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
import speiger.src.collections.PACKAGE.collections.ITERATOR;
 | 
					import speiger.src.collections.PACKAGE.collections.ITERATOR;
 | 
				
			||||||
 | 
					#if !TYPE_OBJECT
 | 
				
			||||||
 | 
					import speiger.src.collections.PACKAGE.functions.COMPARATOR;
 | 
				
			||||||
 | 
					import speiger.src.collections.PACKAGE.functions.CONSUMER;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
import speiger.src.collections.PACKAGE.utils.ARRAYS;
 | 
					import speiger.src.collections.PACKAGE.utils.ARRAYS;
 | 
				
			||||||
import speiger.src.collections.PACKAGE.utils.ITERATORS;
 | 
					import speiger.src.collections.PACKAGE.utils.ITERATORS;
 | 
				
			||||||
#if TYPE_OBJECT
 | 
					#if TYPE_OBJECT
 | 
				
			||||||
@ -21,13 +33,13 @@ import speiger.src.collections.utils.Stack;
 | 
				
			|||||||
#else
 | 
					#else
 | 
				
			||||||
import speiger.src.collections.objects.utils.ObjectArrays;
 | 
					import speiger.src.collections.objects.utils.ObjectArrays;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
import speiger.src.collections.utils.IArray;
 | 
					import speiger.src.collections.PACKAGE.utils.IARRAY;
 | 
				
			||||||
import speiger.src.collections.utils.SanityChecks;
 | 
					import speiger.src.collections.utils.SanityChecks;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if TYPE_OBJECT
 | 
					#if TYPE_OBJECT
 | 
				
			||||||
public class ARRAY_LIST KEY_GENERIC_TYPE extends ABSTRACT_LIST KEY_GENERIC_TYPE implements IArray, Stack<KEY_TYPE>
 | 
					public class ARRAY_LIST KEY_GENERIC_TYPE extends ABSTRACT_LIST KEY_GENERIC_TYPE implements IARRAY<KEY_TYPE>, Stack<KEY_TYPE>
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
public class ARRAY_LIST KEY_GENERIC_TYPE extends ABSTRACT_LIST KEY_GENERIC_TYPE implements IArray, STACK
 | 
					public class ARRAY_LIST KEY_GENERIC_TYPE extends ABSTRACT_LIST KEY_GENERIC_TYPE implements IARRAY, STACK
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	static final int DEFAULT_ARRAY_SIZE = 10;
 | 
						static final int DEFAULT_ARRAY_SIZE = 10;
 | 
				
			||||||
@ -94,6 +106,14 @@ public class ARRAY_LIST KEY_GENERIC_TYPE extends ABSTRACT_LIST KEY_GENERIC_TYPE
 | 
				
			|||||||
		return list;
 | 
							return list;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
					#if TYPE_OBJECT
 | 
				
			||||||
 | 
						public static GENERIC_BRACES ARRAY_LIST KEY_GENERIC_TYPE of(Class<KEY_TYPE> c) {
 | 
				
			||||||
 | 
							ARRAY_LIST KEY_GENERIC_TYPE list = new ARRAY_LISTBRACES();
 | 
				
			||||||
 | 
							list.data = (KEY_TYPE[])ObjectArrays.newArray(c.getClass().getComponentType(), 0);
 | 
				
			||||||
 | 
							return list;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
	@Override
 | 
						@Override
 | 
				
			||||||
	public void add(int index, CLASS_TYPE element) {
 | 
						public void add(int index, CLASS_TYPE element) {
 | 
				
			||||||
		checkAddRange(index);
 | 
							checkAddRange(index);
 | 
				
			||||||
@ -228,9 +248,7 @@ public class ARRAY_LIST KEY_GENERIC_TYPE extends ABSTRACT_LIST KEY_GENERIC_TYPE
 | 
				
			|||||||
	@Override
 | 
						@Override
 | 
				
			||||||
	@Primitive
 | 
						@Primitive
 | 
				
			||||||
	public boolean containsAll(Collection<?> c) {
 | 
						public boolean containsAll(Collection<?> c) {
 | 
				
			||||||
#if !TYPE_OBJECT
 | 
							if(c instanceof COLLECTION) return containsAll((COLLECTION KEY_GENERIC_TYPE)c);
 | 
				
			||||||
		if(c instanceof COLLECTION) return containsAll((COLLECTION)c);
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
		Objects.requireNonNull(c);
 | 
							Objects.requireNonNull(c);
 | 
				
			||||||
		for(int i = 0,m=size;i<m;i++) {
 | 
							for(int i = 0,m=size;i<m;i++) {
 | 
				
			||||||
#if !TYPE_OBJECT
 | 
					#if !TYPE_OBJECT
 | 
				
			||||||
@ -246,9 +264,7 @@ public class ARRAY_LIST KEY_GENERIC_TYPE extends ABSTRACT_LIST KEY_GENERIC_TYPE
 | 
				
			|||||||
	@Primitive
 | 
						@Primitive
 | 
				
			||||||
	public boolean containsAny(Collection<?> c)
 | 
						public boolean containsAny(Collection<?> c)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
#if !TYPE_OBJECT
 | 
							if(c instanceof COLLECTION) return containsAny((COLLECTION KEY_GENERIC_TYPE)c);
 | 
				
			||||||
		if(c instanceof COLLECTION) return containsAny((COLLECTION)c);
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
		Objects.requireNonNull(c);
 | 
							Objects.requireNonNull(c);
 | 
				
			||||||
		for(int i = 0,m=size;i<m;i++) {
 | 
							for(int i = 0,m=size;i<m;i++) {
 | 
				
			||||||
#if !TYPE_OBJECT
 | 
					#if !TYPE_OBJECT
 | 
				
			||||||
@ -260,9 +276,42 @@ public class ARRAY_LIST KEY_GENERIC_TYPE extends ABSTRACT_LIST KEY_GENERIC_TYPE
 | 
				
			|||||||
		return false;
 | 
							return false;
 | 
				
			||||||
	}	
 | 
						}	
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
#if !TYPE_OBJECT
 | 
					 | 
				
			||||||
	@Override
 | 
						@Override
 | 
				
			||||||
	public boolean containsAll(COLLECTION c) {
 | 
						@Primitive
 | 
				
			||||||
 | 
						public int indexOf(Object o) {
 | 
				
			||||||
 | 
							if(o == null) return -1;
 | 
				
			||||||
 | 
							for(int i = 0;i<size;i++) {
 | 
				
			||||||
 | 
								if(EQUALS_KEY_TYPE(data[i], o)) return i;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return -1;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						@Primitive
 | 
				
			||||||
 | 
						public int lastIndexOf(Object o) {
 | 
				
			||||||
 | 
							if(o == null) return -1;
 | 
				
			||||||
 | 
							for(int i = size - 1;i>=0;i--) {
 | 
				
			||||||
 | 
								if(EQUALS_KEY_TYPE(data[i], o)) return i;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return -1;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
					#if TYPE_OBJECT
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public void sort(Comparator<? super CLASS_TYPE> c) {
 | 
				
			||||||
 | 
							if(c != null) ARRAYS.stableSort(data, size, c);
 | 
				
			||||||
 | 
							else ARRAYS.stableSort((Comparable[])data, size);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public void unstableSort(Comparator<? super CLASS_TYPE> c) {
 | 
				
			||||||
 | 
							if(c != null) ARRAYS.unstableSort(data, size, c);
 | 
				
			||||||
 | 
							else ARRAYS.unstableSort((Comparable[])data, size);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public boolean containsAll(COLLECTION KEY_GENERIC_TYPE c) {
 | 
				
			||||||
		Objects.requireNonNull(c);
 | 
							Objects.requireNonNull(c);
 | 
				
			||||||
		for(int i = 0,m=size;i<m;i++) {
 | 
							for(int i = 0,m=size;i<m;i++) {
 | 
				
			||||||
			if(!c.contains(data[i])) return false;
 | 
								if(!c.contains(data[i])) return false;
 | 
				
			||||||
@ -271,7 +320,7 @@ public class ARRAY_LIST KEY_GENERIC_TYPE extends ABSTRACT_LIST KEY_GENERIC_TYPE
 | 
				
			|||||||
	}	
 | 
						}	
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	@Override
 | 
						@Override
 | 
				
			||||||
	public boolean containsAny(COLLECTION c) {
 | 
						public boolean containsAny(COLLECTION KEY_GENERIC_TYPE c) {
 | 
				
			||||||
		Objects.requireNonNull(c);
 | 
							Objects.requireNonNull(c);
 | 
				
			||||||
		for(int i = 0,m=size;i<m;i++) {
 | 
							for(int i = 0,m=size;i<m;i++) {
 | 
				
			||||||
			if(c.contains(data[i])) return true;
 | 
								if(c.contains(data[i])) return true;
 | 
				
			||||||
@ -279,6 +328,35 @@ public class ARRAY_LIST KEY_GENERIC_TYPE extends ABSTRACT_LIST KEY_GENERIC_TYPE
 | 
				
			|||||||
		return false;
 | 
							return false;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
					#if !TYPE_OBJECT
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public int indexOf(KEY_TYPE e) {
 | 
				
			||||||
 | 
							for(int i = 0;i<size;i++) {
 | 
				
			||||||
 | 
								if(EQUALS(data[i], e)) return i;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return -1;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public int lastIndexOf(KEY_TYPE e) {
 | 
				
			||||||
 | 
							for(int i = size - 1;i>=0;i--) {
 | 
				
			||||||
 | 
								if(EQUALS(data[i], e)) return i;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return -1;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public void sort(COMPARATOR c) {
 | 
				
			||||||
 | 
							if(c != null) ARRAYS.stableSort(data, size, c);
 | 
				
			||||||
 | 
							else ARRAYS.stableSort(data, size);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public void unstableSort(COMPARATOR c) {
 | 
				
			||||||
 | 
							if(c != null) ARRAYS.unstableSort(data, size, c);
 | 
				
			||||||
 | 
							else ARRAYS.unstableSort(data, size);		
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
	@Override
 | 
						@Override
 | 
				
			||||||
	public KEY_TYPE GET_KEY(int index) {
 | 
						public KEY_TYPE GET_KEY(int index) {
 | 
				
			||||||
@ -292,6 +370,19 @@ public class ARRAY_LIST KEY_GENERIC_TYPE extends ABSTRACT_LIST KEY_GENERIC_TYPE
 | 
				
			|||||||
		return data[(size() - 1) - index];
 | 
							return data[(size() - 1) - index];
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public KEY_TYPE[] elements() {
 | 
				
			||||||
 | 
							return data;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						@Primitive
 | 
				
			||||||
 | 
						public void forEach(CONSUMER KEY_SUPER_GENERIC_TYPE action) {
 | 
				
			||||||
 | 
							Objects.requireNonNull(action);
 | 
				
			||||||
 | 
							for(int i = 0;i<size;i++)
 | 
				
			||||||
 | 
								action.accept(data[i]);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	@Override
 | 
						@Override
 | 
				
			||||||
	public KEY_TYPE set(int index, KEY_TYPE e) {
 | 
						public KEY_TYPE set(int index, KEY_TYPE e) {
 | 
				
			||||||
		checkRange(index);
 | 
							checkRange(index);
 | 
				
			||||||
@ -300,6 +391,24 @@ public class ARRAY_LIST KEY_GENERIC_TYPE extends ABSTRACT_LIST KEY_GENERIC_TYPE
 | 
				
			|||||||
		return old;
 | 
							return old;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public void replaceAll(UnaryOperator<CLASS_TYPE> o) {
 | 
				
			||||||
 | 
							for(int i = 0;i<size;i++)
 | 
				
			||||||
 | 
								data[i] = OBJ_TO_KEY(o.apply(KEY_TO_OBJ(data[i])));
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
					#if PRIMITIVES	
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public void REPLACE(UNARY_OPERATOR o) {
 | 
				
			||||||
 | 
							for(int i = 0;i<size;i++)
 | 
				
			||||||
 | 
					#if TYPE_BYTE || TYPE_SHORT || TYPE_CHAR || TYPE_FLOAT
 | 
				
			||||||
 | 
								data[i] = SanityChecks.SANITY_CAST(o.APPLY(data[i]));
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
						data[i] = o.APPLY(data[i]);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
	@Override
 | 
						@Override
 | 
				
			||||||
	public KEY_TYPE REMOVE(int index) {
 | 
						public KEY_TYPE REMOVE(int index) {
 | 
				
			||||||
		checkRange(index);
 | 
							checkRange(index);
 | 
				
			||||||
@ -321,9 +430,7 @@ public class ARRAY_LIST KEY_GENERIC_TYPE extends ABSTRACT_LIST KEY_GENERIC_TYPE
 | 
				
			|||||||
	@Primitive
 | 
						@Primitive
 | 
				
			||||||
	public boolean removeAll(Collection<?> c) {
 | 
						public boolean removeAll(Collection<?> c) {
 | 
				
			||||||
		if(c.isEmpty()) return false;
 | 
							if(c.isEmpty()) return false;
 | 
				
			||||||
#if !TYPE_OBJECT
 | 
							if(c instanceof COLLECTION) return removeAll((COLLECTION KEY_GENERIC_TYPE)c);
 | 
				
			||||||
		if(c instanceof COLLECTION) return removeAll((COLLECTION)c);
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
		boolean modified = false;
 | 
							boolean modified = false;
 | 
				
			||||||
		for(int i = 0, j = 0;i<size;i++) {
 | 
							for(int i = 0, j = 0;i<size;i++) {
 | 
				
			||||||
			if(!c.contains(KEY_TO_OBJ(data[i]))) {
 | 
								if(!c.contains(KEY_TO_OBJ(data[i]))) {
 | 
				
			||||||
@ -339,13 +446,10 @@ public class ARRAY_LIST KEY_GENERIC_TYPE extends ABSTRACT_LIST KEY_GENERIC_TYPE
 | 
				
			|||||||
	public boolean retainAll(Collection<?> c) {
 | 
						public boolean retainAll(Collection<?> c) {
 | 
				
			||||||
		if(c.isEmpty()) {
 | 
							if(c.isEmpty()) {
 | 
				
			||||||
			boolean modifed = size > 0;
 | 
								boolean modifed = size > 0;
 | 
				
			||||||
			Arrays.fill(data, 0, size, EMPTY_VALUE);
 | 
								clear();
 | 
				
			||||||
			size = 0;
 | 
					 | 
				
			||||||
			return modifed;
 | 
								return modifed;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
#if !TYPE_OBJECT
 | 
							if(c instanceof COLLECTION) return retainAll((COLLECTION KEY_GENERIC_TYPE)c);
 | 
				
			||||||
		if(c instanceof COLLECTION) return retainAll((COLLECTION)c);
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
		boolean modified = false;
 | 
							boolean modified = false;
 | 
				
			||||||
		for(int i = 0, j = 0;i<size;i++) {
 | 
							for(int i = 0, j = 0;i<size;i++) {
 | 
				
			||||||
			if(c.contains(KEY_TO_OBJ(data[i]))) {
 | 
								if(c.contains(KEY_TO_OBJ(data[i]))) {
 | 
				
			||||||
@ -356,7 +460,6 @@ public class ARRAY_LIST KEY_GENERIC_TYPE extends ABSTRACT_LIST KEY_GENERIC_TYPE
 | 
				
			|||||||
		return modified;
 | 
							return modified;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	@Override
 | 
						@Override
 | 
				
			||||||
	@Primitive
 | 
						@Primitive
 | 
				
			||||||
	public boolean removeIf(Predicate<? super CLASS_TYPE> filter) {
 | 
						public boolean removeIf(Predicate<? super CLASS_TYPE> filter) {
 | 
				
			||||||
@ -371,9 +474,8 @@ public class ARRAY_LIST KEY_GENERIC_TYPE extends ABSTRACT_LIST KEY_GENERIC_TYPE
 | 
				
			|||||||
		return modified;
 | 
							return modified;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
#if !TYPE_OBJECT
 | 
					 | 
				
			||||||
	@Override
 | 
						@Override
 | 
				
			||||||
	public boolean removeAll(COLLECTION c) {
 | 
						public boolean removeAll(COLLECTION KEY_GENERIC_TYPE c) {
 | 
				
			||||||
		if(c.isEmpty()) return false;
 | 
							if(c.isEmpty()) return false;
 | 
				
			||||||
		boolean modified = false;
 | 
							boolean modified = false;
 | 
				
			||||||
		for(int i = 0, j = 0;i<size;i++) {
 | 
							for(int i = 0, j = 0;i<size;i++) {
 | 
				
			||||||
@ -386,11 +488,10 @@ public class ARRAY_LIST KEY_GENERIC_TYPE extends ABSTRACT_LIST KEY_GENERIC_TYPE
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	@Override
 | 
						@Override
 | 
				
			||||||
	public boolean retainAll(COLLECTION c) {
 | 
						public boolean retainAll(COLLECTION KEY_GENERIC_TYPE c) {
 | 
				
			||||||
		if(c.isEmpty()) {
 | 
							if(c.isEmpty()) {
 | 
				
			||||||
			boolean modifed = size > 0;
 | 
								boolean modifed = size > 0;
 | 
				
			||||||
			Arrays.fill(data, 0, size, EMPTY_VALUE);
 | 
								clear();
 | 
				
			||||||
			size = 0;
 | 
					 | 
				
			||||||
			return modifed;
 | 
								return modifed;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		boolean modified = false;
 | 
							boolean modified = false;
 | 
				
			||||||
@ -417,7 +518,6 @@ public class ARRAY_LIST KEY_GENERIC_TYPE extends ABSTRACT_LIST KEY_GENERIC_TYPE
 | 
				
			|||||||
		return modified;
 | 
							return modified;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
	@Override
 | 
						@Override
 | 
				
			||||||
	@Primitive
 | 
						@Primitive
 | 
				
			||||||
 | 
				
			|||||||
@ -6,8 +6,16 @@ import java.util.Objects;
 | 
				
			|||||||
import java.util.function.UNARY_OPERATOR;
 | 
					import java.util.function.UNARY_OPERATOR;
 | 
				
			||||||
import java.util.function.UnaryOperator;
 | 
					import java.util.function.UnaryOperator;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					import java.util.Comparator;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import speiger.src.collections.PACKAGE.collections.COLLECTION;
 | 
					import speiger.src.collections.PACKAGE.collections.COLLECTION;
 | 
				
			||||||
 | 
					#if !TYPE_OBJECT
 | 
				
			||||||
 | 
					import speiger.src.collections.PACKAGE.functions.COMPARATOR;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					import speiger.src.collections.PACKAGE.utils.ARRAYS;
 | 
				
			||||||
 | 
					#if TYPE_BYTE || TYPE_SHORT || TYPE_CHAR || TYPE_FLOAT
 | 
				
			||||||
 | 
					import speiger.src.collections.utils.SanityChecks;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public interface LIST KEY_GENERIC_TYPE extends COLLECTION KEY_GENERIC_TYPE, List<CLASS_TYPE>
 | 
					public interface LIST KEY_GENERIC_TYPE extends COLLECTION KEY_GENERIC_TYPE, List<CLASS_TYPE>
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -41,7 +49,7 @@ public interface LIST KEY_GENERIC_TYPE extends COLLECTION KEY_GENERIC_TYPE, List
 | 
				
			|||||||
        LIST_ITERATOR iter = listIterator();
 | 
					        LIST_ITERATOR iter = listIterator();
 | 
				
			||||||
        while (iter.hasNext())
 | 
					        while (iter.hasNext())
 | 
				
			||||||
#if TYPE_BYTE || TYPE_SHORT || TYPE_CHAR || TYPE_FLOAT
 | 
					#if TYPE_BYTE || TYPE_SHORT || TYPE_CHAR || TYPE_FLOAT
 | 
				
			||||||
        	iter.set((KEY_TYPE)o.APPLY(iter.NEXT()));
 | 
					        	iter.set(SanityChecks.SANITY_CAST(o.APPLY(iter.NEXT())));
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
			iter.set(o.APPLY(iter.NEXT()));
 | 
								iter.set(o.APPLY(iter.NEXT()));
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@ -62,9 +70,63 @@ public interface LIST KEY_GENERIC_TYPE extends COLLECTION KEY_GENERIC_TYPE, List
 | 
				
			|||||||
#if TYPE_OBJECT
 | 
					#if TYPE_OBJECT
 | 
				
			||||||
	public KEY_TYPE[] extractElements(int from, int to, Class<KEY_TYPE> type);
 | 
						public KEY_TYPE[] extractElements(int from, int to, Class<KEY_TYPE> type);
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public default void sort(Comparator<? super CLASS_TYPE> c) {
 | 
				
			||||||
 | 
							KEY_TYPE[] array = (KEY_TYPE[])TO_ARRAY();
 | 
				
			||||||
 | 
							if(c != null) ARRAYS.stableSort(array, c);
 | 
				
			||||||
 | 
							else ARRAYS.stableSort((Comparable[])array);
 | 
				
			||||||
 | 
					    	LIST_ITERATOR KEY_GENERIC_TYPE iter = listIterator();
 | 
				
			||||||
 | 
					    	for (int i = 0,m=size();i<m && iter.hasNext();i++) {
 | 
				
			||||||
 | 
					    		iter.NEXT();
 | 
				
			||||||
 | 
					    		iter.set(array[i]);
 | 
				
			||||||
 | 
					    	}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public default void unstableSort(Comparator<? super CLASS_TYPE> c) {
 | 
				
			||||||
 | 
							KEY_TYPE[] array = (KEY_TYPE[])TO_ARRAY();
 | 
				
			||||||
 | 
							if(c != null) ARRAYS.unstableSort(array, c);
 | 
				
			||||||
 | 
							else ARRAYS.unstableSort((Comparable[])array);
 | 
				
			||||||
 | 
					        LIST_ITERATOR KEY_GENERIC_TYPE iter = listIterator();
 | 
				
			||||||
 | 
					        for (int i = 0,m=size();i<m && iter.hasNext();i++) {
 | 
				
			||||||
 | 
					        	iter.NEXT();
 | 
				
			||||||
 | 
					        	iter.set(array[i]);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
	public KEY_TYPE[] extractElements(int from, int to);
 | 
						public KEY_TYPE[] extractElements(int from, int to);
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						default void sort(Comparator<? super CLASS_TYPE> c) {
 | 
				
			||||||
 | 
							sort((K, V) -> c.compare(KEY_TO_OBJ(K), KEY_TO_OBJ(V)));
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public default void sort(COMPARATOR c) {
 | 
				
			||||||
 | 
							KEY_TYPE[] array = TO_ARRAY();
 | 
				
			||||||
 | 
							if(c != null) ARRAYS.stableSort(array, c);
 | 
				
			||||||
 | 
							else ARRAYS.stableSort(array);
 | 
				
			||||||
 | 
							LIST_ITERATOR KEY_GENERIC_TYPE iter = listIterator();
 | 
				
			||||||
 | 
							for (int i = 0,m=size();i<m && iter.hasNext();i++) {
 | 
				
			||||||
 | 
								iter.NEXT();
 | 
				
			||||||
 | 
								iter.set(array[i]);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public default void unstableSort(Comparator<? super CLASS_TYPE> c) {
 | 
				
			||||||
 | 
							unstableSort((K, V) -> c.compare(KEY_TO_OBJ(K), KEY_TO_OBJ(V)));
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public default void unstableSort(COMPARATOR c) {
 | 
				
			||||||
 | 
							KEY_TYPE[] array = TO_ARRAY();
 | 
				
			||||||
 | 
							if(c != null) ARRAYS.unstableSort(array, c);
 | 
				
			||||||
 | 
							else ARRAYS.unstableSort(array);
 | 
				
			||||||
 | 
					        LIST_ITERATOR KEY_GENERIC_TYPE iter = listIterator();
 | 
				
			||||||
 | 
					        for (int i = 0,m=size();i<m && iter.hasNext();i++) {
 | 
				
			||||||
 | 
					        	iter.NEXT();
 | 
				
			||||||
 | 
					        	iter.set(array[i]);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
	@Override
 | 
						@Override
 | 
				
			||||||
	public LIST_ITERATOR KEY_GENERIC_TYPE listIterator();
 | 
						public LIST_ITERATOR KEY_GENERIC_TYPE listIterator();
 | 
				
			||||||
 | 
				
			|||||||
@ -60,6 +60,55 @@ public class ARRAYS
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public static GENERIC_BRACES void stableSort(KEY_TYPE[] array, COMPARATOR KEY_GENERIC_TYPE comp) {
 | 
				
			||||||
 | 
							stableSort(array, 0, array.length, comp);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public static GENERIC_BRACES void stableSort(KEY_TYPE[] array, int length, COMPARATOR KEY_GENERIC_TYPE comp) {
 | 
				
			||||||
 | 
							stableSort(array, 0, length, comp);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public static GENERIC_BRACES void stableSort(KEY_TYPE[] array, int from, int to, COMPARATOR KEY_GENERIC_TYPE comp) {
 | 
				
			||||||
 | 
							mergeSort(array, null, from, to, comp);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public static COMPAREABLE_BRACES void stableSort(KEY_TYPE[] array) {
 | 
				
			||||||
 | 
							stableSort(array, 0, array.length);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public static COMPAREABLE_BRACES void stableSort(KEY_TYPE[] array, int length) {
 | 
				
			||||||
 | 
							stableSort(array, 0, length);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public static COMPAREABLE_BRACES void stableSort(KEY_TYPE[] array, int from, int to) {
 | 
				
			||||||
 | 
							mergeSort(array, null, from, to);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public static GENERIC_BRACES void unstableSort(KEY_TYPE[] array, COMPARATOR KEY_GENERIC_TYPE comp) {
 | 
				
			||||||
 | 
							unstableSort(array, 0, array.length, comp);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public static GENERIC_BRACES void unstableSort(KEY_TYPE[] array, int length, COMPARATOR KEY_GENERIC_TYPE comp) {
 | 
				
			||||||
 | 
							unstableSort(array, 0, length, comp);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public static GENERIC_BRACES void unstableSort(KEY_TYPE[] array, int from, int to, COMPARATOR KEY_GENERIC_TYPE comp) {
 | 
				
			||||||
 | 
							quickSort(array, from, to, comp);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public static COMPAREABLE_BRACES void unstableSort(KEY_TYPE[] array) {
 | 
				
			||||||
 | 
							unstableSort(array, 0, array.length);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public static COMPAREABLE_BRACES void unstableSort(KEY_TYPE[] array, int length) {
 | 
				
			||||||
 | 
							unstableSort(array, 0, length);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public static COMPAREABLE_BRACES void unstableSort(KEY_TYPE[] array, int from, int to) {
 | 
				
			||||||
 | 
							quickSort(array, from, to);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	public static GENERIC_BRACES void insertionSort(KEY_TYPE[] array, COMPARATOR KEY_GENERIC_TYPE comp) {
 | 
						public static GENERIC_BRACES void insertionSort(KEY_TYPE[] array, COMPARATOR KEY_GENERIC_TYPE comp) {
 | 
				
			||||||
		insertionSort(array, 0, array.length, comp);
 | 
							insertionSort(array, 0, array.length, comp);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
				
			|||||||
@ -0,0 +1,369 @@
 | 
				
			|||||||
 | 
					package speiger.src.collections.PACKAGE.utils;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.Collection;
 | 
				
			||||||
 | 
					import java.util.function.Predicate;
 | 
				
			||||||
 | 
					#if PRIMITIVES
 | 
				
			||||||
 | 
					import java.util.function.JAVA_PREDICATE;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import speiger.src.collections.PACKAGE.collections.ABSTRACT_COLLECTION;
 | 
				
			||||||
 | 
					import speiger.src.collections.PACKAGE.collections.COLLECTION;
 | 
				
			||||||
 | 
					import speiger.src.collections.PACKAGE.collections.ITERATOR;
 | 
				
			||||||
 | 
					import speiger.src.collections.objects.utils.ObjectArrays;
 | 
				
			||||||
 | 
					#if !TYPE_OBJECT
 | 
				
			||||||
 | 
					import speiger.src.collections.PACKAGE.utils.ARRAYS;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class COLLECTIONS
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						public static final COLLECTION NO_GENERIC_TYPE EMPTY = new EmptyCollectionBRACES();
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public static GENERIC_BRACES COLLECTION KEY_GENERIC_TYPE emptyCollection() {
 | 
				
			||||||
 | 
					#if TYPE_OBJECT
 | 
				
			||||||
 | 
							return (COLLECTION<KEY_TYPE>)EMPTY;
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
							return EMPTY;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public static GENERIC_BRACES COLLECTION KEY_GENERIC_TYPE unmodifiableCollection(COLLECTION KEY_GENERIC_TYPE c) {
 | 
				
			||||||
 | 
							return c instanceof UnmodifiableCollection ? c : new UnmodifiableCollectionBRACES(c);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public static GENERIC_BRACES COLLECTION KEY_GENERIC_TYPE synchronizedCollection(COLLECTION KEY_GENERIC_TYPE c) {
 | 
				
			||||||
 | 
							return c instanceof SynchronizedCollection ? c : new SynchronizedCollectionBRACES(c);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public static GENERIC_BRACES COLLECTION KEY_GENERIC_TYPE synchronizedCollection(COLLECTION KEY_GENERIC_TYPE c, Object mutex) {
 | 
				
			||||||
 | 
							return c instanceof SynchronizedCollection ? c : new SynchronizedCollectionBRACES(c, mutex);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public static class SynchronizedCollection KEY_GENERIC_TYPE implements COLLECTION KEY_GENERIC_TYPE {
 | 
				
			||||||
 | 
							COLLECTION KEY_GENERIC_TYPE c;
 | 
				
			||||||
 | 
							protected Object mutex;
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							SynchronizedCollection(COLLECTION KEY_GENERIC_TYPE c) {
 | 
				
			||||||
 | 
								this.c = c;
 | 
				
			||||||
 | 
								mutex = this;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							SynchronizedCollection(COLLECTION KEY_GENERIC_TYPE c, Object mutex) {
 | 
				
			||||||
 | 
								this.c = c;
 | 
				
			||||||
 | 
								this.mutex = mutex;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean add(KEY_TYPE o) { synchronized(mutex) { return c.add(o); } }
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean addAll(Collection<? extends CLASS_TYPE> c) { synchronized(mutex) { return this.c.addAll(c); } }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean addAll(COLLECTION KEY_GENERIC_TYPE c) { synchronized(mutex) { return this.c.addAll(c); } }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					#if !TYPE_OBJECT
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean contains(KEY_TYPE o) { synchronized(mutex) { return c.contains(o); } }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean contains(Object o) { synchronized(mutex) { return c.contains(o); } }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean containsAll(Collection<?> c) { synchronized(mutex) { return this.c.containsAll(c); } }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean containsAny(Collection<?> c) { synchronized(mutex) { return this.c.containsAny(c); } }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean containsAll(COLLECTION KEY_GENERIC_TYPE c) { synchronized(mutex) { return this.c.containsAll(c); } }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean containsAny(COLLECTION KEY_GENERIC_TYPE c) { synchronized(mutex) { return this.c.containsAny(c); } }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public int size() { synchronized(mutex) { return c.size(); } }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean isEmpty() { synchronized(mutex) { return c.isEmpty(); } }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public ITERATOR KEY_GENERIC_TYPE iterator() {
 | 
				
			||||||
 | 
								return c.iterator();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							@Primitive
 | 
				
			||||||
 | 
							public boolean remove(Object o) { synchronized(mutex) { return c.remove(o); } }
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean removeAll(Collection<?> c) { synchronized(mutex) { return this.c.removeAll(c); } }
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean retainAll(Collection<?> c) { synchronized(mutex) { return this.c.retainAll(c); } }
 | 
				
			||||||
 | 
					#if !TYPE_OBJECT
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean REMOVE_KEY(KEY_TYPE o) { synchronized(mutex) { return c.REMOVE_KEY(o); } }
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean removeAll(COLLECTION KEY_GENERIC_TYPE c) { synchronized(mutex) { return this.c.removeAll(c); } }
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean retainAll(COLLECTION KEY_GENERIC_TYPE c) { synchronized(mutex) { return this.c.retainAll(c); } }
 | 
				
			||||||
 | 
					#if PRIMITIVES
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean remIf(JAVA_PREDICATE filter){ synchronized(mutex) { return c.remIf(filter); } }
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public void clear() { synchronized(mutex) { c.clear(); } }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public Object[] toArray() { synchronized(mutex) { return c.toArray(); } }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					#if !TYPE_OBJECT
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public <T> T[] toArray(T[] a) { synchronized(mutex) { return c.toArray(a); } }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public KEY_TYPE[] TO_ARRAY() { synchronized(mutex) { return c.TO_ARRAY(); } }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public KEY_TYPE[] TO_ARRAY(KEY_TYPE[] a) { synchronized(mutex) { return c.TO_ARRAY(a); } }
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public <E> E[] toArray(E[] a) { synchronized(mutex) { return c.toArray(a); } }
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public static class UnmodifiableCollection KEY_GENERIC_TYPE implements COLLECTION KEY_GENERIC_TYPE {
 | 
				
			||||||
 | 
							COLLECTION KEY_GENERIC_TYPE c;
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							UnmodifiableCollection(COLLECTION KEY_GENERIC_TYPE c) {
 | 
				
			||||||
 | 
								this.c = c;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean add(KEY_TYPE o) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean addAll(Collection<? extends CLASS_TYPE> c) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean addAll(COLLECTION KEY_GENERIC_TYPE c) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					#if !TYPE_OBJECT
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean contains(KEY_TYPE o) {
 | 
				
			||||||
 | 
								return c.contains(o);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean contains(Object o) {
 | 
				
			||||||
 | 
								return c.contains(o);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean containsAll(COLLECTION KEY_GENERIC_TYPE c) {
 | 
				
			||||||
 | 
								return this.c.containsAll(c);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean containsAny(COLLECTION KEY_GENERIC_TYPE c) {
 | 
				
			||||||
 | 
								return this.c.containsAny(c);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean containsAny(Collection<?> c) {
 | 
				
			||||||
 | 
								return this.c.containsAny(c);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean containsAll(Collection<?> c) {
 | 
				
			||||||
 | 
								return this.c.containsAll(c);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public int size() {
 | 
				
			||||||
 | 
								return c.size();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean isEmpty() {
 | 
				
			||||||
 | 
								return c.isEmpty();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public ITERATOR KEY_GENERIC_TYPE iterator() {
 | 
				
			||||||
 | 
								return ITERATORS.unmodifiable(c.iterator());
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							@Deprecated
 | 
				
			||||||
 | 
							public boolean remove(Object o) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean removeAll(Collection<?> c) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean retainAll(Collection<?> c) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							@Primitive
 | 
				
			||||||
 | 
							public boolean removeIf(Predicate<? super CLASS_TYPE> filter) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
					#if !TYPE_OBJECT
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean REMOVE_KEY(KEY_TYPE o) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean removeAll(COLLECTION KEY_GENERIC_TYPE c) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean retainAll(COLLECTION KEY_GENERIC_TYPE c) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
					#if PRIMITIVES
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean remIf(JAVA_PREDICATE filter){ throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public void clear() { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public Object[] toArray() {
 | 
				
			||||||
 | 
								return c.toArray();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					#if !TYPE_OBJECT
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public <T> T[] toArray(T[] a) {
 | 
				
			||||||
 | 
								return c.toArray(a);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public KEY_TYPE[] TO_ARRAY() {
 | 
				
			||||||
 | 
								return c.TO_ARRAY();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public KEY_TYPE[] TO_ARRAY(KEY_TYPE[] a) {
 | 
				
			||||||
 | 
								return c.TO_ARRAY(a);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public <E> E[] toArray(E[] a) {
 | 
				
			||||||
 | 
								return c.toArray(a);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public static class EmptyCollection KEY_GENERIC_TYPE extends ABSTRACT_COLLECTION KEY_GENERIC_TYPE {
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean add(KEY_TYPE o) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean addAll(COLLECTION KEY_GENERIC_TYPE c) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					#if !TYPE_OBJECT
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean contains(KEY_TYPE o) {
 | 
				
			||||||
 | 
								return false;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean containsAll(COLLECTION KEY_GENERIC_TYPE c) {
 | 
				
			||||||
 | 
								return false;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean containsAny(COLLECTION KEY_GENERIC_TYPE c) {
 | 
				
			||||||
 | 
								return false;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean contains(Object o) {
 | 
				
			||||||
 | 
								return false;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean containsAny(Collection<?> c) {
 | 
				
			||||||
 | 
								return false;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean containsAll(Collection<?> c) {
 | 
				
			||||||
 | 
								return false;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public int hashCode() {
 | 
				
			||||||
 | 
								return 0;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean equals(Object o) {
 | 
				
			||||||
 | 
								if(o == this) return true;
 | 
				
			||||||
 | 
							  	if(!(o instanceof Collection)) return false;
 | 
				
			||||||
 | 
							  	return ((Collection<?>)o).isEmpty();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							@Deprecated
 | 
				
			||||||
 | 
							public boolean remove(Object o) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean removeAll(Collection<?> c) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean retainAll(Collection<?> c) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							@Primitive
 | 
				
			||||||
 | 
							public boolean removeIf(Predicate<? super CLASS_TYPE> filter) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
					#if !TYPE_OBJECT
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean REMOVE_KEY(KEY_TYPE o) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean removeAll(COLLECTION KEY_GENERIC_TYPE c) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean retainAll(COLLECTION KEY_GENERIC_TYPE c) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
					#if PRIMITIVES
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean remIf(JAVA_PREDICATE filter){ throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public Object[] toArray() {
 | 
				
			||||||
 | 
								return ObjectArrays.EMPTY_ARRAY;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					#if !TYPE_OBJECT
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public <T> T[] toArray(T[] a) {
 | 
				
			||||||
 | 
								return a;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public KEY_TYPE[] TO_ARRAY() {
 | 
				
			||||||
 | 
								return ARRAYS.EMPTY_ARRAY;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public KEY_TYPE[] TO_ARRAY(KEY_TYPE[] a) {
 | 
				
			||||||
 | 
								return a;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					#else 
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public <E> E[] toArray(E[] a) {
 | 
				
			||||||
 | 
								return a;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public ITERATOR KEY_GENERIC_TYPE iterator() {
 | 
				
			||||||
 | 
								return ITERATORS.emptyIterator();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public void clear() {
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public int size() {
 | 
				
			||||||
 | 
								return 0;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,8 @@
 | 
				
			|||||||
 | 
					package speiger.src.collections.PACKAGE.utils;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import speiger.src.collections.utils.IArray;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public interface IARRAY KEY_GENERIC_TYPE extends IArray
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						public KEY_TYPE[] elements();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -2,9 +2,28 @@ package speiger.src.collections.PACKAGE.utils;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import java.util.Iterator;
 | 
					import java.util.Iterator;
 | 
				
			||||||
import speiger.src.collections.PACKAGE.collections.ITERATOR;
 | 
					import speiger.src.collections.PACKAGE.collections.ITERATOR;
 | 
				
			||||||
 | 
					import speiger.src.collections.PACKAGE.lists.LIST_ITERATOR;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class ITERATORS
 | 
					public class ITERATORS
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
						public static final EmptyIterator NO_GENERIC_TYPE EMPTY = new EmptyIteratorBRACES();
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public static GENERIC_BRACES EmptyIterator KEY_GENERIC_TYPE emptyIterator() {
 | 
				
			||||||
 | 
					#if TYPE_OBJECT
 | 
				
			||||||
 | 
							return (EmptyIterator<KEY_TYPE>)EMPTY;
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
							return EMPTY;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public static GENERIC_BRACES ITERATOR KEY_GENERIC_TYPE unmodifiable(ITERATOR KEY_GENERIC_TYPE iterator) {
 | 
				
			||||||
 | 
							return new UnmodifiableIteratorBRACES(iterator);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public static GENERIC_BRACES LIST_ITERATOR KEY_GENERIC_TYPE unmodifiable(LIST_ITERATOR KEY_GENERIC_TYPE iterator) {
 | 
				
			||||||
 | 
							return new UnmodifiableListIteratorBRACES(iterator);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	public static GENERIC_BRACES ArrayIterator KEY_GENERIC_TYPE wrap(KEY_TYPE[] a) {
 | 
						public static GENERIC_BRACES ArrayIterator KEY_GENERIC_TYPE wrap(KEY_TYPE[] a) {
 | 
				
			||||||
		return wrap(a, 0, a.length);
 | 
							return wrap(a, 0, a.length);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -63,6 +82,115 @@ public class ITERATORS
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
						private static class UnmodifiableListIterator KEY_GENERIC_TYPE implements LIST_ITERATOR KEY_GENERIC_TYPE
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							LIST_ITERATOR KEY_GENERIC_TYPE iter;
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
							UnmodifiableListIterator(LIST_ITERATOR KEY_GENERIC_TYPE iter) {
 | 
				
			||||||
 | 
								this.iter = iter;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean hasNext() {
 | 
				
			||||||
 | 
								return iter.hasNext();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean hasPrevious() {
 | 
				
			||||||
 | 
								return iter.hasPrevious();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public int nextIndex() {
 | 
				
			||||||
 | 
								return iter.nextIndex();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public int previousIndex() {
 | 
				
			||||||
 | 
								return iter.previousIndex();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public void remove() { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public KEY_TYPE PREVIOUS() {
 | 
				
			||||||
 | 
								return iter.PREVIOUS();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public KEY_TYPE NEXT() {
 | 
				
			||||||
 | 
								return iter.NEXT();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public void set(KEY_TYPE e) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public void add(KEY_TYPE e) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						private static class UnmodifiableIterator KEY_GENERIC_TYPE implements ITERATOR KEY_GENERIC_TYPE
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							ITERATOR KEY_GENERIC_TYPE iterator;
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
							UnmodifiableIterator(ITERATOR KEY_GENERIC_TYPE iterator) {
 | 
				
			||||||
 | 
								this.iterator = iterator;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean hasNext() {
 | 
				
			||||||
 | 
								return iterator.hasNext();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public KEY_TYPE NEXT() {
 | 
				
			||||||
 | 
								return iterator.NEXT();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private static class EmptyIterator KEY_GENERIC_TYPE implements LIST_ITERATOR KEY_GENERIC_TYPE
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean hasNext() {
 | 
				
			||||||
 | 
								return false;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public KEY_TYPE NEXT() {
 | 
				
			||||||
 | 
								return EMPTY_VALUE;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean hasPrevious() {
 | 
				
			||||||
 | 
								return false;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public KEY_TYPE PREVIOUS() {
 | 
				
			||||||
 | 
								return EMPTY_VALUE;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public int nextIndex() {
 | 
				
			||||||
 | 
								return 0;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public int previousIndex() {
 | 
				
			||||||
 | 
								return 0;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public void remove() { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public void set(KEY_TYPE e) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public void add(KEY_TYPE e) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	private static class ArrayIterator KEY_GENERIC_TYPE implements ITERATOR KEY_GENERIC_TYPE
 | 
						private static class ArrayIterator KEY_GENERIC_TYPE implements ITERATOR KEY_GENERIC_TYPE
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		KEY_TYPE[] a;
 | 
							KEY_TYPE[] a;
 | 
				
			||||||
 | 
				
			|||||||
@ -0,0 +1,367 @@
 | 
				
			|||||||
 | 
					package speiger.src.collections.PACKAGE.utils;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.Collection;
 | 
				
			||||||
 | 
					import java.util.RandomAccess;
 | 
				
			||||||
 | 
					#if TYPE_OBJECT
 | 
				
			||||||
 | 
					import java.util.function.Consumer;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import speiger.src.collections.PACKAGE.collections.COLLECTION;
 | 
				
			||||||
 | 
					#if !TYPE_OBJECT
 | 
				
			||||||
 | 
					import speiger.src.collections.PACKAGE.functions.CONSUMER;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					import speiger.src.collections.PACKAGE.lists.LIST;
 | 
				
			||||||
 | 
					import speiger.src.collections.PACKAGE.lists.LIST_ITERATOR;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class LISTS
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						public static final EmptyList NO_GENERIC_TYPE EMPTY = new EmptyListBRACES();
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public static GENERIC_BRACES EmptyList KEY_GENERIC_TYPE emptyList() {
 | 
				
			||||||
 | 
					#if TYPE_OBJECT
 | 
				
			||||||
 | 
							return (EmptyList<KEY_TYPE>)EMPTY;
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
							return EMPTY;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public static GENERIC_BRACES LIST KEY_GENERIC_TYPE unmodifiableList(LIST KEY_GENERIC_TYPE l) {
 | 
				
			||||||
 | 
							return l instanceof UnmodifiableList ? l : l instanceof RandomAccess ? new UnmodifiableRandomListBRACES(l) : new UnmodifiableListBRACES(l);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public static GENERIC_BRACES LIST KEY_GENERIC_TYPE synchronizedList(LIST KEY_GENERIC_TYPE l) {
 | 
				
			||||||
 | 
							return l instanceof SynchronizedList ? l : (l instanceof IARRAY ? new SynchronizedArrayListBRACES(l) : (l instanceof RandomAccess ? new SynchronizedRandomAccessListBRACES(l) : new SynchronizedListBRACES(l)));
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public static GENERIC_BRACES LIST KEY_GENERIC_TYPE synchronizedList(LIST KEY_GENERIC_TYPE l, Object mutex) {
 | 
				
			||||||
 | 
							return l instanceof SynchronizedList ? l : (l instanceof IARRAY ? new SynchronizedArrayListBRACES(l, mutex) : (l instanceof RandomAccess ? new SynchronizedRandomAccessListBRACES(l, mutex) : new SynchronizedListBRACES(l, mutex)));
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public static class SynchronizedArrayList KEY_GENERIC_TYPE extends SynchronizedList KEY_GENERIC_TYPE implements IARRAY KEY_GENERIC_TYPE
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							IARRAY KEY_GENERIC_TYPE l;
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							SynchronizedArrayList(LIST KEY_GENERIC_TYPE l) {
 | 
				
			||||||
 | 
								super(l);
 | 
				
			||||||
 | 
								this.l = (IARRAY KEY_GENERIC_TYPE)l;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							SynchronizedArrayList(LIST KEY_GENERIC_TYPE l, Object mutex) {
 | 
				
			||||||
 | 
								super(l, mutex);
 | 
				
			||||||
 | 
								this.l = (IARRAY KEY_GENERIC_TYPE)l;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							public void ensureCapacity(int size) { synchronized(mutex) { l.ensureCapacity(size); } }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							public void trim(int size) { synchronized(mutex) { l.trim(size); } }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							public KEY_TYPE[] elements() { synchronized(mutex) { return l.elements(); } }
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public static class SynchronizedRandomAccessList KEY_GENERIC_TYPE extends SynchronizedList KEY_GENERIC_TYPE implements RandomAccess 
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							SynchronizedRandomAccessList(LIST KEY_GENERIC_TYPE l) {
 | 
				
			||||||
 | 
								super(l);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							SynchronizedRandomAccessList(LIST KEY_GENERIC_TYPE l, Object mutex) {
 | 
				
			||||||
 | 
								super(l, mutex);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public static class SynchronizedList KEY_GENERIC_TYPE extends COLLECTIONS.SynchronizedCollection KEY_GENERIC_TYPE implements LIST KEY_GENERIC_TYPE
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							LIST KEY_GENERIC_TYPE l;
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							SynchronizedList(LIST KEY_GENERIC_TYPE l) {
 | 
				
			||||||
 | 
								super(l);
 | 
				
			||||||
 | 
								this.l = l;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							SynchronizedList(LIST KEY_GENERIC_TYPE l, Object mutex) {
 | 
				
			||||||
 | 
								super(l, mutex);
 | 
				
			||||||
 | 
								this.l = l;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean addAll(int index, Collection<? extends CLASS_TYPE> c) { synchronized(mutex) { return l.addAll(index, c); } }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public void add(int index, CLASS_TYPE element) { synchronized(mutex) { l.add(index, element); } }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					#if !TYPE_OBJECT
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public void add(int index, KEY_TYPE e) { synchronized(mutex) { l.add(index, e); } }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean addAll(int index, COLLECTION KEY_GENERIC_TYPE c) { synchronized(mutex) { return l.addAll(index, c); } }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean addAll(LIST KEY_GENERIC_TYPE c) { synchronized(mutex) { return l.addAll(c); } }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean addAll(int index, LIST KEY_GENERIC_TYPE c) { synchronized(mutex) { return l.addAll(index, c); } }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public KEY_TYPE GET_KEY(int index) { synchronized(mutex) { return l.GET_KEY(index); } }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					#if !TYPE_OBJECT
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public void forEach(CONSUMER action) { synchronized(mutex) { l.forEach(action); } }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					#else 
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public void forEach(Consumer<? super KEY_TYPE> action) { synchronized(mutex) { l.forEach(action); } }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public KEY_TYPE set(int index, KEY_TYPE e) { synchronized(mutex) { return l.set(index, e); } }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public KEY_TYPE REMOVE(int index) { synchronized(mutex) { return l.REMOVE(index); } }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							@Primitive
 | 
				
			||||||
 | 
							public int indexOf(Object e) { synchronized(mutex) { return l.indexOf(e); } }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							@Primitive
 | 
				
			||||||
 | 
							public int lastIndexOf(Object e) { synchronized(mutex) { return l.lastIndexOf(e); } }
 | 
				
			||||||
 | 
									
 | 
				
			||||||
 | 
					#if !TYPE_OBJECT
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public int indexOf(KEY_TYPE e) { synchronized(mutex) { return l.indexOf(e); } }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public int lastIndexOf(KEY_TYPE e) { synchronized(mutex) { return l.lastIndexOf(e); } }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public void addElements(int from, KEY_TYPE[] a, int offset, int length) { synchronized(mutex) { addElements(from, a, offset, length); } }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public KEY_TYPE[] getElements(int from, KEY_TYPE[] a, int offset, int length) { synchronized(mutex) { return l.getElements(from, a, offset, length); } }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public void removeElements(int from, int to) { synchronized(mutex) { l.removeElements(from, to); } }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					#if !TYPE_OBJECT
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public KEY_TYPE[] extractElements(int from, int to) { synchronized(mutex) { return l.extractElements(from, to); } }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public KEY_TYPE[] extractElements(int from, int to, Class<T> clz) { synchronized(mutex) { return l.extractElements(from, to, clz); } }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public LIST_ITERATOR KEY_GENERIC_TYPE listIterator() {
 | 
				
			||||||
 | 
								return l.listIterator();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public LIST_ITERATOR KEY_GENERIC_TYPE listIterator(int index) {
 | 
				
			||||||
 | 
								return l.listIterator(index);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public LIST KEY_GENERIC_TYPE subList(int from, int to) {
 | 
				
			||||||
 | 
								return synchronizedList(l.subList(from, to));
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public void size(int size) { synchronized(mutex) { l.size(size); } }
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public static class UnmodifiableRandomList KEY_GENERIC_TYPE extends UnmodifiableList KEY_GENERIC_TYPE implements RandomAccess 
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							UnmodifiableRandomList(LIST KEY_GENERIC_TYPE l) {
 | 
				
			||||||
 | 
								super(l);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public static class UnmodifiableList KEY_GENERIC_TYPE extends COLLECTIONS.UnmodifiableCollection KEY_GENERIC_TYPE implements LIST KEY_GENERIC_TYPE
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							LIST KEY_GENERIC_TYPE l;
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							UnmodifiableList(LIST KEY_GENERIC_TYPE l) {
 | 
				
			||||||
 | 
								super(l);
 | 
				
			||||||
 | 
								this.l = l;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean addAll(int index, Collection<? extends CLASS_TYPE> c) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public void add(int index, CLASS_TYPE element) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					#if !TYPE_OBJECT
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public void add(int index, KEY_TYPE e) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean addAll(int index, COLLECTION KEY_GENERIC_TYPE c) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean addAll(LIST KEY_GENERIC_TYPE c) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean addAll(int index, LIST KEY_GENERIC_TYPE c) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public KEY_TYPE GET_KEY(int index) { return l.GET_KEY(index); }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					#if !TYPE_OBJECT
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public void forEach(CONSUMER action) { l.forEach(action); }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					#else 
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public void forEach(Consumer<? super KEY_TYPE> action) { l.forEach(action); }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public KEY_TYPE set(int index, KEY_TYPE e) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public KEY_TYPE REMOVE(int index) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							@Primitive
 | 
				
			||||||
 | 
							public int indexOf(Object e) { return l.indexOf(e); }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							@Primitive
 | 
				
			||||||
 | 
							public int lastIndexOf(Object e) { return l.lastIndexOf(e); }
 | 
				
			||||||
 | 
									
 | 
				
			||||||
 | 
					#if !TYPE_OBJECT
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public int indexOf(KEY_TYPE e) { return l.indexOf(e); }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public int lastIndexOf(KEY_TYPE e) { return l.lastIndexOf(e); }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public void addElements(int from, KEY_TYPE[] a, int offset, int length) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public KEY_TYPE[] getElements(int from, KEY_TYPE[] a, int offset, int length) {
 | 
				
			||||||
 | 
								return l.getElements(from, a, offset, length);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public void removeElements(int from, int to) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					#if !TYPE_OBJECT
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public KEY_TYPE[] extractElements(int from, int to) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public KEY_TYPE[] extractElements(int from, int to, Class<T> clz) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public LIST_ITERATOR KEY_GENERIC_TYPE listIterator() {
 | 
				
			||||||
 | 
								return ITERATORS.unmodifiable(l.listIterator());
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public LIST_ITERATOR KEY_GENERIC_TYPE listIterator(int index) {
 | 
				
			||||||
 | 
								return ITERATORS.unmodifiable(l.listIterator(index));
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public LIST KEY_GENERIC_TYPE subList(int from, int to) {
 | 
				
			||||||
 | 
								return unmodifiableList(l.subList(from, to));
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public void size(int size) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public static class EmptyList KEY_GENERIC_TYPE extends COLLECTIONS.EmptyCollection KEY_GENERIC_TYPE implements LIST KEY_GENERIC_TYPE
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean addAll(int index, Collection<? extends CLASS_TYPE> c) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public void add(int index, CLASS_TYPE element) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					#if !TYPE_OBJECT
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public void add(int index, KEY_TYPE e) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean addAll(int index, COLLECTION KEY_GENERIC_TYPE c) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean addAll(LIST KEY_GENERIC_TYPE c) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean addAll(int index, LIST KEY_GENERIC_TYPE c) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public KEY_TYPE GET_KEY(int index) { throw new IndexOutOfBoundsException(); }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public KEY_TYPE set(int index, KEY_TYPE e) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public KEY_TYPE REMOVE(int index) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public int indexOf(Object e) { return -1; }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public int lastIndexOf(Object e) { return -1; }
 | 
				
			||||||
 | 
									
 | 
				
			||||||
 | 
					#if !TYPE_OBJECT
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public int indexOf(KEY_TYPE e) { return -1; }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public int lastIndexOf(KEY_TYPE e) { return -1; }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public void addElements(int from, KEY_TYPE[] a, int offset, int length){ throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public KEY_TYPE[] getElements(int from, KEY_TYPE[] a, int offset, int length) { throw new IndexOutOfBoundsException(); }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public void removeElements(int from, int to) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					#if !TYPE_OBJECT
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public KEY_TYPE[] extractElements(int from, int to) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public KEY_TYPE[] extractElements(int from, int to, Class<T> clz) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public LIST_ITERATOR KEY_GENERIC_TYPE listIterator() {
 | 
				
			||||||
 | 
								return ITERATORS.emptyIterator();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public LIST_ITERATOR KEY_GENERIC_TYPE listIterator(int index) {
 | 
				
			||||||
 | 
								if(index != 0)
 | 
				
			||||||
 | 
									throw new IndexOutOfBoundsException();
 | 
				
			||||||
 | 
								return ITERATORS.emptyIterator();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public LIST KEY_GENERIC_TYPE subList(int from, int to) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public void size(int size) { throw new UnsupportedOperationException(); }
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user