Compare commits
4
Commits
54c9660145
..
0.4.4
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ffc34a131f | ||
|
|
a38e7b069a | ||
|
|
9c15980e68 | ||
|
|
a05689017e |
@@ -1,5 +1,20 @@
|
|||||||
# Changelog of versions
|
# Changelog of versions
|
||||||
|
|
||||||
|
### Version 0.4.4
|
||||||
|
- Fixed: ObjectArrayList.of was causing crashes because of a Poor implementation.
|
||||||
|
- Added: Unsorted HashMaps/Sets now throw Concurrent exceptions if they were modified during a rehash.
|
||||||
|
- Added: Array/Collection version of enqueue and enqueueFirst to PriorityQueues.
|
||||||
|
- Added: fillBuffer function into PrimitiveLists which allow to optimize JavaNio buffers if needed.
|
||||||
|
|
||||||
|
### Version 0.4.3
|
||||||
|
- Added: Wrapper now support the Optimized Lambda replacer functions to improve performance.
|
||||||
|
- Added: FIFO Queue has now a minimum capacity and that is now checked more consistently.
|
||||||
|
|
||||||
|
### Version 0.4.2
|
||||||
|
- Added: Lists/Sets/Maps/PriorityQueues are now copy-able. with the new copy() function.
|
||||||
|
Note: subLists/subMaps/subSets or synchronize/unmodifyable wrappers do not support that function.
|
||||||
|
- Fixed: PriorityQueues didn't implement: hashCode/equals/toString
|
||||||
|
|
||||||
### Version 0.4.1
|
### Version 0.4.1
|
||||||
- Changed: ForEach with input now provides input, value instead of value, input, this improves the usage of method references greatly
|
- Changed: ForEach with input now provides input, value instead of value, input, this improves the usage of method references greatly
|
||||||
- Added: addAll with Array-types in collections.
|
- Added: addAll with Array-types in collections.
|
||||||
|
|||||||
@@ -23,15 +23,17 @@ But its focus is a different one.
|
|||||||
New Specialized functions that were added to increase performance or reduce allocations or Quality Of life.
|
New Specialized functions that were added to increase performance or reduce allocations or Quality Of life.
|
||||||
To highlight things that may be wanted.
|
To highlight things that may be wanted.
|
||||||
- Iterable:
|
- Iterable:
|
||||||
- map/flatMap/arrayFlatMap: A Light weight version of Stream.map()
|
- map/flatMap/arrayFlatMap: A Light weight version of Stream.map().
|
||||||
- findFirst: Allows to find the first element of a Predicated Iterable.
|
- findFirst: Allows to find the first element of a Predicated Iterable.
|
||||||
- filter: Allows to filter unwanted elements for wrapped Iterable
|
- filter: Allows to filter unwanted elements for wrapped Iterable
|
||||||
- matchAny/matchNone/matchAll: Allows to find elements in a collection.
|
- matchAny/matchNone/matchAll: Allows to find elements in a collection.
|
||||||
- count: counts all valid elements in a collection
|
- count: counts all valid elements in a collection.
|
||||||
- forEach: Allows to input a second element into a forEach move allowing for more flexibility for Method References
|
- forEach: Allows to input a second element into a forEach move allowing for more flexibility for Method References
|
||||||
- Collection:
|
- Collection:
|
||||||
- containsAny: Allows to test if another collection contains an of the elements of the tested collection.
|
- containsAny: Allows to test if another collection contains an of the elements of the tested collection.
|
||||||
- primitiveStream: Provides access to the closest Java Stream Type.
|
- primitiveStream: Provides access to the closest Java Stream Type.
|
||||||
|
- copy: shallowCopies the collection, used instead of clone because this is better to use.
|
||||||
|
(subCollections/synchronized/unmodifiable not supported for obvious reasons)
|
||||||
- List:
|
- List:
|
||||||
- add/get/removeElements (From FastUtil): Allows to add/get/remove an Array into/from a list. Just with less overhead
|
- add/get/removeElements (From FastUtil): Allows to add/get/remove an Array into/from a list. Just with less overhead
|
||||||
- extractElements: Allows to remove a Range of elements from the List and get what was removed.
|
- extractElements: Allows to remove a Range of elements from the List and get what was removed.
|
||||||
@@ -70,13 +72,16 @@ repositories {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
compile 'de.speiger:Primitive-Collections:0.4.1'
|
compile 'de.speiger:Primitive-Collections:0.4.4'
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
Direct:
|
Direct:
|
||||||
|
|
||||||
| Version | Jar | Sources | Java Doc |
|
| Version | Jar | Sources | Java Doc |
|
||||||
|--------- |------------------------------------------------------------------------------------------------------------------------------ |-------------------------------------------------------------------------------------------------------------------------------------- |-------------------------------------------------------------------------------------------------------------------------------------- |
|
|--------- |------------------------------------------------------------------------------------------------------------------------------ |-------------------------------------------------------------------------------------------------------------------------------------- |-------------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
|
| 0.4.4 | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.4.4/Primitive-Collections-0.4.4.jar) | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.4.4/Primitive-Collections-0.4.4-sources.jar) | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.4.4/Primitive-Collections-0.4.4-javadoc.jar) |
|
||||||
|
| 0.4.3 | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.4.3/Primitive-Collections-0.4.3.jar) | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.4.3/Primitive-Collections-0.4.3-sources.jar) | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.4.3/Primitive-Collections-0.4.3-javadoc.jar) |
|
||||||
|
| 0.4.2 | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.4.2/Primitive-Collections-0.4.2.jar) | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.4.2/Primitive-Collections-0.4.2-sources.jar) | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.4.2/Primitive-Collections-0.4.2-javadoc.jar) |
|
||||||
| 0.4.1 | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.4.1/Primitive-Collections-0.4.1.jar) | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.4.1/Primitive-Collections-0.4.1-sources.jar) | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.4.1/Primitive-Collections-0.4.1-javadoc.jar) |
|
| 0.4.1 | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.4.1/Primitive-Collections-0.4.1.jar) | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.4.1/Primitive-Collections-0.4.1-sources.jar) | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.4.1/Primitive-Collections-0.4.1-javadoc.jar) |
|
||||||
| 0.4.0 | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.4.0/Primitive-Collections-0.4.0.jar) | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.4.0/Primitive-Collections-0.4.0-sources.jar) | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.4.0/Primitive-Collections-0.4.0-javadoc.jar) |
|
| 0.4.0 | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.4.0/Primitive-Collections-0.4.0.jar) | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.4.0/Primitive-Collections-0.4.0-sources.jar) | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.4.0/Primitive-Collections-0.4.0-javadoc.jar) |
|
||||||
| 0.3.6 | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.3.6/Primitive-Collections-0.3.6.jar) | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.3.6/Primitive-Collections-0.3.6-sources.jar) | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.3.6/Primitive-Collections-0.3.6-javadoc.jar) |
|
| 0.3.6 | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.3.6/Primitive-Collections-0.3.6.jar) | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.3.6/Primitive-Collections-0.3.6-sources.jar) | [Download](https://maven.speiger.com/repository/main/de/speiger/Primitive-Collections/0.3.6/Primitive-Collections-0.3.6-javadoc.jar) |
|
||||||
|
|||||||
+1
-1
@@ -18,7 +18,7 @@ repositories {
|
|||||||
}
|
}
|
||||||
|
|
||||||
archivesBaseName = 'Primitive Collections'
|
archivesBaseName = 'Primitive Collections'
|
||||||
version = '0.4.1';
|
version = '0.4.4';
|
||||||
|
|
||||||
sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8'
|
sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8'
|
||||||
|
|
||||||
|
|||||||
@@ -153,6 +153,7 @@ public class GlobalVariables
|
|||||||
addSimpleMapper("JAVA_UNARY_OPERATOR", type.isObject() ? "BinaryOperator" : type == ClassType.BOOLEAN ? "" : type.getCustomJDKType().getFileType()+"UnaryOperator");
|
addSimpleMapper("JAVA_UNARY_OPERATOR", type.isObject() ? "BinaryOperator" : type == ClassType.BOOLEAN ? "" : type.getCustomJDKType().getFileType()+"UnaryOperator");
|
||||||
addSimpleMapper("JAVA_SPLIT_ITERATOR", type.isPrimitiveBlocking() ? "Spliterator" : "Of"+type.getCustomJDKType().getFileType());
|
addSimpleMapper("JAVA_SPLIT_ITERATOR", type.isPrimitiveBlocking() ? "Spliterator" : "Of"+type.getCustomJDKType().getFileType());
|
||||||
addSimpleMapper("JAVA_STREAM", type.isPrimitiveBlocking() ? "" : type.getCustomJDKType().getFileType()+"Stream");
|
addSimpleMapper("JAVA_STREAM", type.isPrimitiveBlocking() ? "" : type.getCustomJDKType().getFileType()+"Stream");
|
||||||
|
addSimpleMapper("JAVA_BUFFER", type.getFileType()+"Buffer");
|
||||||
|
|
||||||
//Final Classes
|
//Final Classes
|
||||||
addClassMapper("ARRAY_LIST", "ArrayList");
|
addClassMapper("ARRAY_LIST", "ArrayList");
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ 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.JAVA_UNARY_OPERATOR;
|
import java.util.function.JAVA_UNARY_OPERATOR;
|
||||||
|
import java.nio.JAVA_BUFFER;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
import speiger.src.collections.PACKAGE.collections.COLLECTION;
|
import speiger.src.collections.PACKAGE.collections.COLLECTION;
|
||||||
@@ -181,7 +182,7 @@ public class ARRAY_LIST KEY_GENERIC_TYPE extends ABSTRACT_LIST KEY_GENERIC_TYPE
|
|||||||
*/
|
*/
|
||||||
public static GENERIC_KEY_BRACES ARRAY_LIST KEY_GENERIC_TYPE of(Class<KEY_TYPE> c) {
|
public static GENERIC_KEY_BRACES ARRAY_LIST KEY_GENERIC_TYPE of(Class<KEY_TYPE> c) {
|
||||||
ARRAY_LIST KEY_GENERIC_TYPE list = new ARRAY_LISTBRACES();
|
ARRAY_LIST KEY_GENERIC_TYPE list = new ARRAY_LISTBRACES();
|
||||||
list.data = (KEY_TYPE[])ObjectArrays.newArray(c.getClass().getComponentType(), 0);
|
list.data = (KEY_TYPE[])ObjectArrays.newArray(c, 0);
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -388,9 +389,15 @@ public class ARRAY_LIST KEY_GENERIC_TYPE extends ABSTRACT_LIST KEY_GENERIC_TYPE
|
|||||||
size -= length;
|
size -= length;
|
||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
#if PRIMITIVES
|
||||||
|
@Override
|
||||||
|
public void fillBuffer(JAVA_BUFFER buffer) {
|
||||||
|
buffer.put(data, 0, size);
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A function to find if the Element is present in this list.
|
* A function to find if the Element is present in this list.
|
||||||
* @param o the element that is searched for
|
* @param o the element that is searched for
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ package speiger.src.collections.PACKAGE.lists;
|
|||||||
|
|
||||||
#if TYPE_OBJECT
|
#if TYPE_OBJECT
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
|
#else if PRIMITIVES
|
||||||
|
import java.nio.JAVA_BUFFER;
|
||||||
#endif
|
#endif
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
@@ -637,6 +639,14 @@ public class LINKED_LIST KEY_GENERIC_TYPE extends ABSTRACT_LIST KEY_GENERIC_TYPE
|
|||||||
return d;
|
return d;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
#if PRIMITIVES
|
||||||
|
@Override
|
||||||
|
public void fillBuffer(JAVA_BUFFER buffer) {
|
||||||
|
for(Entry KEY_GENERIC_TYPE entry = first;entry != null;entry = entry.next)
|
||||||
|
buffer.put(entry.value);
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@Override
|
@Override
|
||||||
@Primitive
|
@Primitive
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
package speiger.src.collections.PACKAGE.lists;
|
package speiger.src.collections.PACKAGE.lists;
|
||||||
|
|
||||||
|
#if PRIMITIVES
|
||||||
|
import java.nio.JAVA_BUFFER;
|
||||||
|
#endif
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
#if !TYPE_OBJECT && !TYPE_BOOLEAN
|
#if !TYPE_OBJECT && !TYPE_BOOLEAN
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
@@ -255,6 +258,14 @@ public interface LIST KEY_GENERIC_TYPE extends COLLECTION KEY_GENERIC_TYPE, List
|
|||||||
*/
|
*/
|
||||||
public KEY_TYPE[] extractElements(int from, int to);
|
public KEY_TYPE[] extractElements(int from, int to);
|
||||||
|
|
||||||
|
#if PRIMITIVES
|
||||||
|
/**
|
||||||
|
* Helper function that allows to fastFill a buffer reducing the duplication requirement
|
||||||
|
* @param buffer where the data should be stored in.
|
||||||
|
*/
|
||||||
|
public default void fillBuffer(JAVA_BUFFER buffer) { buffer.put(TO_ARRAY()); }
|
||||||
|
|
||||||
|
#endif
|
||||||
/** {@inheritDoc}
|
/** {@inheritDoc}
|
||||||
* <p>This default implementation delegates to the corresponding type-specific function.
|
* <p>This default implementation delegates to the corresponding type-specific function.
|
||||||
* @deprecated Please use the corresponding type-specific function instead.
|
* @deprecated Please use the corresponding type-specific function instead.
|
||||||
|
|||||||
+5
-1
@@ -1,6 +1,7 @@
|
|||||||
package speiger.src.collections.PACKAGE.maps.impl.customHash;
|
package speiger.src.collections.PACKAGE.maps.impl.customHash;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.ConcurrentModificationException;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.NoSuchElementException;
|
import java.util.NoSuchElementException;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
@@ -667,7 +668,10 @@ public class CUSTOM_HASH_MAP KEY_VALUE_GENERIC_TYPE extends ABSTRACT_MAP KEY_VAL
|
|||||||
KEY_TYPE[] newKeys = NEW_KEY_ARRAY(newSize + 1);
|
KEY_TYPE[] newKeys = NEW_KEY_ARRAY(newSize + 1);
|
||||||
VALUE_TYPE[] newValues = NEW_VALUE_ARRAY(newSize + 1);
|
VALUE_TYPE[] newValues = NEW_VALUE_ARRAY(newSize + 1);
|
||||||
for(int i = nullIndex, pos = 0, j = (size - (containsNull ? 1 : 0));j-- != 0;) {
|
for(int i = nullIndex, pos = 0, j = (size - (containsNull ? 1 : 0));j-- != 0;) {
|
||||||
while(strategy.equals(keys[--i], EMPTY_KEY_VALUE));
|
while(true) {
|
||||||
|
if(--i < 0) throw new ConcurrentModificationException("Map was modified during rehash");
|
||||||
|
if(!strategy.equals(keys[i], EMPTY_KEY_VALUE)) break;
|
||||||
|
}
|
||||||
if(!strategy.equals(newKeys[pos = HashUtil.mix(strategy.hashCode(keys[i])) & newMask], EMPTY_KEY_VALUE))
|
if(!strategy.equals(newKeys[pos = HashUtil.mix(strategy.hashCode(keys[i])) & newMask], EMPTY_KEY_VALUE))
|
||||||
while(!strategy.equals(newKeys[pos = (++pos & newMask)], EMPTY_KEY_VALUE));
|
while(!strategy.equals(newKeys[pos = (++pos & newMask)], EMPTY_KEY_VALUE));
|
||||||
newKeys[pos] = keys[i];
|
newKeys[pos] = keys[i];
|
||||||
|
|||||||
+5
-1
@@ -1,6 +1,7 @@
|
|||||||
package speiger.src.collections.PACKAGE.maps.impl.hash;
|
package speiger.src.collections.PACKAGE.maps.impl.hash;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.ConcurrentModificationException;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.NoSuchElementException;
|
import java.util.NoSuchElementException;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
@@ -627,7 +628,10 @@ public class HASH_MAP KEY_VALUE_GENERIC_TYPE extends ABSTRACT_MAP KEY_VALUE_GENE
|
|||||||
KEY_TYPE[] newKeys = NEW_KEY_ARRAY(newSize + 1);
|
KEY_TYPE[] newKeys = NEW_KEY_ARRAY(newSize + 1);
|
||||||
VALUE_TYPE[] newValues = NEW_VALUE_ARRAY(newSize + 1);
|
VALUE_TYPE[] newValues = NEW_VALUE_ARRAY(newSize + 1);
|
||||||
for(int i = nullIndex, pos = 0, j = (size - (containsNull ? 1 : 0));j-- != 0;) {
|
for(int i = nullIndex, pos = 0, j = (size - (containsNull ? 1 : 0));j-- != 0;) {
|
||||||
while(KEY_EQUALS_NULL(keys[--i]));
|
while(true) {
|
||||||
|
if(--i < 0) throw new ConcurrentModificationException("Map was modified during rehash");
|
||||||
|
if(KEY_EQUALS_NOT_NULL(keys[i])) break;
|
||||||
|
}
|
||||||
if(KEY_EQUALS_NOT_NULL(newKeys[pos = HashUtil.mix(KEY_TO_HASH(keys[i])) & newMask]))
|
if(KEY_EQUALS_NOT_NULL(newKeys[pos = HashUtil.mix(KEY_TO_HASH(keys[i])) & newMask]))
|
||||||
while(KEY_EQUALS_NOT_NULL(newKeys[pos = (++pos & newMask)]));
|
while(KEY_EQUALS_NOT_NULL(newKeys[pos = (++pos & newMask)]));
|
||||||
newKeys[pos] = keys[i];
|
newKeys[pos] = keys[i];
|
||||||
|
|||||||
+11
-5
@@ -34,6 +34,8 @@ public class ARRAY_FIFO_QUEUE KEY_GENERIC_TYPE extends ABSTRACT_PRIORITY_QUEUE K
|
|||||||
protected int first;
|
protected int first;
|
||||||
/** The Last Index pointer */
|
/** The Last Index pointer */
|
||||||
protected int last;
|
protected int last;
|
||||||
|
/** The Minimum Capacity of the Queue **/
|
||||||
|
protected int minCapacity;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor using a initial array
|
* Constructor using a initial array
|
||||||
@@ -62,7 +64,9 @@ public class ARRAY_FIFO_QUEUE KEY_GENERIC_TYPE extends ABSTRACT_PRIORITY_QUEUE K
|
|||||||
*/
|
*/
|
||||||
public ARRAY_FIFO_QUEUE(KEY_TYPE[] values, int offset, int size) {
|
public ARRAY_FIFO_QUEUE(KEY_TYPE[] values, int offset, int size) {
|
||||||
if (values.length < size) throw new IllegalArgumentException("Initial array (" + values.length + ") is smaller then the expected size (" + size + ")");
|
if (values.length < size) throw new IllegalArgumentException("Initial array (" + values.length + ") is smaller then the expected size (" + size + ")");
|
||||||
if(values.length <= 0) values = NEW_KEY_ARRAY(1);
|
if(values.length <= 0) values = NEW_KEY_ARRAY(MIN_CAPACITY);
|
||||||
|
else if(values.length < MIN_CAPACITY) values = Arrays.copyOf(values, MIN_CAPACITY);
|
||||||
|
minCapacity = MIN_CAPACITY;
|
||||||
array = values;
|
array = values;
|
||||||
first = offset;
|
first = offset;
|
||||||
last = (offset + size) % array.length;
|
last = (offset + size) % array.length;
|
||||||
@@ -76,7 +80,8 @@ public class ARRAY_FIFO_QUEUE KEY_GENERIC_TYPE extends ABSTRACT_PRIORITY_QUEUE K
|
|||||||
*/
|
*/
|
||||||
public ARRAY_FIFO_QUEUE(int capacity) {
|
public ARRAY_FIFO_QUEUE(int capacity) {
|
||||||
if (capacity < 0) throw new IllegalArgumentException("Initial capacity (" + capacity + ") is negative");
|
if (capacity < 0) throw new IllegalArgumentException("Initial capacity (" + capacity + ") is negative");
|
||||||
array = NEW_KEY_ARRAY(Math.max(1, capacity));
|
array = NEW_KEY_ARRAY(Math.max(MIN_CAPACITY, capacity));
|
||||||
|
minCapacity = array.length;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -227,6 +232,7 @@ public class ARRAY_FIFO_QUEUE KEY_GENERIC_TYPE extends ABSTRACT_PRIORITY_QUEUE K
|
|||||||
ARRAY_FIFO_QUEUE KEY_GENERIC_TYPE queue = new ARRAY_FIFO_QUEUEBRACES();
|
ARRAY_FIFO_QUEUE KEY_GENERIC_TYPE queue = new ARRAY_FIFO_QUEUEBRACES();
|
||||||
queue.first = first;
|
queue.first = first;
|
||||||
queue.last = last;
|
queue.last = last;
|
||||||
|
queue.minCapacity = minCapacity;
|
||||||
queue.array = Arrays.copyOf(array, array.length);
|
queue.array = Arrays.copyOf(array, array.length);
|
||||||
return queue;
|
return queue;
|
||||||
}
|
}
|
||||||
@@ -305,7 +311,7 @@ public class ARRAY_FIFO_QUEUE KEY_GENERIC_TYPE extends ABSTRACT_PRIORITY_QUEUE K
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean trim(int size) {
|
public boolean trim(int size) {
|
||||||
int newSize = Math.max(size, size());
|
int newSize = Math.max(Math.max(size, size()), minCapacity);
|
||||||
if(newSize >= array.length) return false;
|
if(newSize >= array.length) return false;
|
||||||
KEY_TYPE[] newArray = NEW_KEY_ARRAY(newSize);
|
KEY_TYPE[] newArray = NEW_KEY_ARRAY(newSize);
|
||||||
if(first <= last) System.arraycopy(array, first, newArray, 0, last - first);
|
if(first <= last) System.arraycopy(array, first, newArray, 0, last - first);
|
||||||
@@ -326,7 +332,7 @@ public class ARRAY_FIFO_QUEUE KEY_GENERIC_TYPE extends ABSTRACT_PRIORITY_QUEUE K
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void clearAndTrim(int size) {
|
public void clearAndTrim(int size) {
|
||||||
int newSize = Math.max(MIN_CAPACITY, size);
|
int newSize = Math.max(minCapacity, size);
|
||||||
if(array.length <= newSize) {
|
if(array.length <= newSize) {
|
||||||
clear();
|
clear();
|
||||||
return;
|
return;
|
||||||
@@ -348,7 +354,7 @@ public class ARRAY_FIFO_QUEUE KEY_GENERIC_TYPE extends ABSTRACT_PRIORITY_QUEUE K
|
|||||||
|
|
||||||
protected void reduce() {
|
protected void reduce() {
|
||||||
final int size = size();
|
final int size = size();
|
||||||
if (array.length > MIN_CAPACITY && size <= array.length / 4) resize(size, array.length / 2);
|
if (array.length > minCapacity && size <= array.length / 4) resize(size, Math.max(array.length / 2, minCapacity));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void expand() {
|
protected void expand() {
|
||||||
|
|||||||
+57
@@ -1,5 +1,12 @@
|
|||||||
package speiger.src.collections.PACKAGE.queues;
|
package speiger.src.collections.PACKAGE.queues;
|
||||||
|
|
||||||
|
#if TYPE_OBJECT
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Iterator;
|
||||||
|
#endif
|
||||||
|
import speiger.src.collections.PACKAGE.collections.COLLECTION;
|
||||||
|
import speiger.src.collections.PACKAGE.collections.ITERATOR;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A Type Speciifc PriorityDeque or Dequeue interface to allow implementations like FIFO queues.
|
* A Type Speciifc PriorityDeque or Dequeue interface to allow implementations like FIFO queues.
|
||||||
* @Type(T)
|
* @Type(T)
|
||||||
@@ -11,6 +18,56 @@ public interface PRIORITY_DEQUEUE KEY_GENERIC_TYPE extends PRIORITY_QUEUE KEY_GE
|
|||||||
* @param e the element that should be inserted into the first place
|
* @param e the element that should be inserted into the first place
|
||||||
*/
|
*/
|
||||||
public void enqueueFirst(KEY_TYPE e);
|
public void enqueueFirst(KEY_TYPE e);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method to mass insert a elements into the first Index of the PriorityDequeue.
|
||||||
|
* @param e the elements that should be inserted
|
||||||
|
*/
|
||||||
|
public default void enqueueAllFirst(KEY_TYPE... e) {
|
||||||
|
enqueueAllFirst(e, 0, e.length);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method to mass insert a elements into the first Index of the PriorityDequeue.
|
||||||
|
* @param e the elements that should be inserted
|
||||||
|
* @param length the amount of elements that should be inserted
|
||||||
|
*/
|
||||||
|
public default void enqueueAllFirst(KEY_TYPE[] e, int length) {
|
||||||
|
enqueueAllFirst(e, 0, length);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method to mass insert a elements into the first Index of the PriorityDequeue.
|
||||||
|
* @param e the elements that should be inserted
|
||||||
|
* @param offset the offset where in the array should be started
|
||||||
|
* @param length the amount of elements that should be inserted
|
||||||
|
*/
|
||||||
|
public default void enqueueAllFirst(KEY_TYPE[] e, int offset, int length) {
|
||||||
|
for(int i = 0;i<length;i++)
|
||||||
|
enqueueFirst(e[i+offset]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method to mass insert elements into first Index of the PriorityDequeue.
|
||||||
|
* @param c the elements that should be inserted from the Collection
|
||||||
|
*/
|
||||||
|
public default void enqueueAllFirst(COLLECTION KEY_GENERIC_TYPE c) {
|
||||||
|
for(ITERATOR KEY_GENERIC_TYPE iter = c.iterator();iter.hasNext();)
|
||||||
|
enqueueFirst(iter.NEXT());
|
||||||
|
}
|
||||||
|
|
||||||
|
#if TYPE_OBJECT
|
||||||
|
/**
|
||||||
|
* Method to mass insert elements into first Index of the PriorityDequeue.
|
||||||
|
* This method exists to add support for Java Collections to make it more useable
|
||||||
|
* @param c the elements that should be inserted from the Collection
|
||||||
|
*/
|
||||||
|
public default void enqueueAllFirst(Collection<? extends CLASS_TYPE> c) {
|
||||||
|
for(Iterator<? extends CLASS_TYPE> iter = c.iterator();iter.hasNext();)
|
||||||
|
enqueueFirst(iter.next());
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
/**
|
/**
|
||||||
* A Method to remove a element from the last place instead of the first
|
* A Method to remove a element from the last place instead of the first
|
||||||
* @return the last element inserted
|
* @return the last element inserted
|
||||||
|
|||||||
+55
-1
@@ -2,11 +2,14 @@ package speiger.src.collections.PACKAGE.queues;
|
|||||||
|
|
||||||
#if TYPE_OBJECT
|
#if TYPE_OBJECT
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import speiger.src.collections.objects.collections.ObjectIterator;
|
import java.util.Collection;
|
||||||
|
import java.util.Iterator;
|
||||||
#else
|
#else
|
||||||
import speiger.src.collections.PACKAGE.functions.COMPARATOR;
|
import speiger.src.collections.PACKAGE.functions.COMPARATOR;
|
||||||
#endif
|
#endif
|
||||||
|
import speiger.src.collections.PACKAGE.collections.COLLECTION;
|
||||||
import speiger.src.collections.PACKAGE.collections.ITERABLE;
|
import speiger.src.collections.PACKAGE.collections.ITERABLE;
|
||||||
|
import speiger.src.collections.PACKAGE.collections.ITERATOR;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A Simple PriorityQueue (or Queue) interface that provides with the nessesary functions to interact with it, without cluttering with the Collection interface.
|
* A Simple PriorityQueue (or Queue) interface that provides with the nessesary functions to interact with it, without cluttering with the Collection interface.
|
||||||
@@ -33,6 +36,57 @@ public interface PRIORITY_QUEUE KEY_GENERIC_TYPE extends ITERABLE KEY_GENERIC_TY
|
|||||||
* @param e the element that should be inserted
|
* @param e the element that should be inserted
|
||||||
*/
|
*/
|
||||||
public void enqueue(KEY_TYPE e);
|
public void enqueue(KEY_TYPE e);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method to mass insert elements into the PriorityQueue
|
||||||
|
* @param e the elements that should be inserted
|
||||||
|
*/
|
||||||
|
public default void enqueueAll(KEY_TYPE... e) {
|
||||||
|
enqueueAll(e, 0, e.length);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method to mass insert elements into the PriorityQueue
|
||||||
|
* @param e the elements that should be inserted
|
||||||
|
* @param length the amount of elements that should be inserted
|
||||||
|
*/
|
||||||
|
public default void enqueueAll(KEY_TYPE[] e, int length) {
|
||||||
|
enqueueAll(e, 0, length);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method to mass insert elements into the PriorityQueue
|
||||||
|
* @param e the elements that should be inserted
|
||||||
|
* @param offset the offset where in the array should be started
|
||||||
|
* @param length the amount of elements that should be inserted
|
||||||
|
*/
|
||||||
|
public default void enqueueAll(KEY_TYPE[] e, int offset, int length) {
|
||||||
|
for(int i = 0;i<length;i++)
|
||||||
|
enqueue(e[i+offset]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method to mass insert elements into the PriorityQueue
|
||||||
|
* @param c the elements that should be inserted from the Collection
|
||||||
|
*/
|
||||||
|
public default void enqueueAll(COLLECTION KEY_GENERIC_TYPE c) {
|
||||||
|
for(ITERATOR KEY_GENERIC_TYPE iter = c.iterator();iter.hasNext();)
|
||||||
|
enqueue(iter.NEXT());
|
||||||
|
}
|
||||||
|
|
||||||
|
#if TYPE_OBJECT
|
||||||
|
/**
|
||||||
|
* Method to mass insert elements into the PriorityQueue
|
||||||
|
* This method exists to add support for Java Collections to make it more useable
|
||||||
|
* @param c the elements that should be inserted from the Collection
|
||||||
|
*/
|
||||||
|
public default void enqueueAll(Collection<? extends CLASS_TYPE> c) {
|
||||||
|
for(Iterator<? extends CLASS_TYPE> iter = c.iterator();iter.hasNext();)
|
||||||
|
enqueue(iter.next());
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Method to extract a element from the PriorityQueue
|
* Method to extract a element from the PriorityQueue
|
||||||
* @return a element from the Queue
|
* @return a element from the Queue
|
||||||
|
|||||||
+5
-1
@@ -2,6 +2,7 @@ package speiger.src.collections.PACKAGE.sets;
|
|||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.ConcurrentModificationException;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.NoSuchElementException;
|
import java.util.NoSuchElementException;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
@@ -429,7 +430,10 @@ public class CUSTOM_HASH_SET KEY_GENERIC_TYPE extends ABSTRACT_SET KEY_GENERIC_T
|
|||||||
int newMask = newSize - 1;
|
int newMask = newSize - 1;
|
||||||
KEY_TYPE[] newKeys = NEW_KEY_ARRAY(newSize + 1);
|
KEY_TYPE[] newKeys = NEW_KEY_ARRAY(newSize + 1);
|
||||||
for(int i = nullIndex, pos = 0, j = (size - (containsNull ? 1 : 0));j-- != 0;) {
|
for(int i = nullIndex, pos = 0, j = (size - (containsNull ? 1 : 0));j-- != 0;) {
|
||||||
while(strategy.equals(keys[--i], EMPTY_KEY_VALUE));
|
while(true) {
|
||||||
|
if(--i < 0) throw new ConcurrentModificationException("Set was modified during rehash");
|
||||||
|
if(!strategy.equals(keys[i], EMPTY_KEY_VALUE)) break;
|
||||||
|
}
|
||||||
if(!strategy.equals(newKeys[pos = HashUtil.mix(KEY_TO_HASH(keys[i])) & newMask], EMPTY_KEY_VALUE))
|
if(!strategy.equals(newKeys[pos = HashUtil.mix(KEY_TO_HASH(keys[i])) & newMask], EMPTY_KEY_VALUE))
|
||||||
while(!strategy.equals(newKeys[pos = (++pos & newMask)], EMPTY_KEY_VALUE));
|
while(!strategy.equals(newKeys[pos = (++pos & newMask)], EMPTY_KEY_VALUE));
|
||||||
newKeys[pos] = keys[i];
|
newKeys[pos] = keys[i];
|
||||||
|
|||||||
+5
-1
@@ -2,6 +2,7 @@ package speiger.src.collections.PACKAGE.sets;
|
|||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.ConcurrentModificationException;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.NoSuchElementException;
|
import java.util.NoSuchElementException;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
@@ -461,7 +462,10 @@ public class HASH_SET KEY_GENERIC_TYPE extends ABSTRACT_SET KEY_GENERIC_TYPE imp
|
|||||||
int newMask = newSize - 1;
|
int newMask = newSize - 1;
|
||||||
KEY_TYPE[] newKeys = NEW_KEY_ARRAY(newSize + 1);
|
KEY_TYPE[] newKeys = NEW_KEY_ARRAY(newSize + 1);
|
||||||
for(int i = nullIndex, pos = 0, j = (size - (containsNull ? 1 : 0));j-- != 0;) {
|
for(int i = nullIndex, pos = 0, j = (size - (containsNull ? 1 : 0));j-- != 0;) {
|
||||||
while(KEY_EQUALS_NULL(keys[--i]));
|
while(true) {
|
||||||
|
if(--i < 0) throw new ConcurrentModificationException("Set was modified during rehash");
|
||||||
|
if(KEY_EQUALS_NOT_NULL(keys[i])) break;
|
||||||
|
}
|
||||||
if(KEY_EQUALS_NOT_NULL(newKeys[pos = HashUtil.mix(KEY_TO_HASH(keys[i])) & newMask]))
|
if(KEY_EQUALS_NOT_NULL(newKeys[pos = HashUtil.mix(KEY_TO_HASH(keys[i])) & newMask]))
|
||||||
while(KEY_EQUALS_NOT_NULL(newKeys[pos = (++pos & newMask)]));
|
while(KEY_EQUALS_NOT_NULL(newKeys[pos = (++pos & newMask)]));
|
||||||
newKeys[pos] = keys[i];
|
newKeys[pos] = keys[i];
|
||||||
|
|||||||
+26
-1
@@ -15,7 +15,8 @@ import speiger.src.collections.objects.utils.ObjectArrays;
|
|||||||
import speiger.src.collections.PACKAGE.functions.CONSUMER;
|
import speiger.src.collections.PACKAGE.functions.CONSUMER;
|
||||||
import speiger.src.collections.PACKAGE.utils.ARRAYS;
|
import speiger.src.collections.PACKAGE.utils.ARRAYS;
|
||||||
#endif
|
#endif
|
||||||
|
import speiger.src.collections.PACKAGE.functions.function.PREDICATE;
|
||||||
|
import speiger.src.collections.objects.functions.consumer.BI_FROM_OBJECT_CONSUMER;
|
||||||
/**
|
/**
|
||||||
* A Helper class for Collections
|
* A Helper class for Collections
|
||||||
*/
|
*/
|
||||||
@@ -180,6 +181,18 @@ public class COLLECTIONS
|
|||||||
public boolean equals(Object obj) { synchronized(mutex) { return c.equals(obj); } }
|
public boolean equals(Object obj) { synchronized(mutex) { return c.equals(obj); } }
|
||||||
@Override
|
@Override
|
||||||
public String toString() { synchronized(mutex) { return c.toString(); } }
|
public String toString() { synchronized(mutex) { return c.toString(); } }
|
||||||
|
@Override
|
||||||
|
public <E> void forEach(E input, BI_FROM_OBJECT_CONSUMER KSK_GENERIC_TYPE<E> action) { synchronized(mutex) { c.forEach(input, action); } }
|
||||||
|
@Override
|
||||||
|
public boolean matchesAny(PREDICATE KEY_GENERIC_TYPE filter) { synchronized(mutex) { return c.matchesAny(filter); } }
|
||||||
|
@Override
|
||||||
|
public boolean matchesNone(PREDICATE KEY_GENERIC_TYPE filter) { synchronized(mutex) { return c.matchesNone(filter); } }
|
||||||
|
@Override
|
||||||
|
public boolean matchesAll(PREDICATE KEY_GENERIC_TYPE filter) { synchronized(mutex) { return c.matchesAll(filter); } }
|
||||||
|
@Override
|
||||||
|
public KEY_TYPE findFirst(PREDICATE KEY_GENERIC_TYPE filter) { synchronized(mutex) { return c.findFirst(filter); } }
|
||||||
|
@Override
|
||||||
|
public int count(PREDICATE KEY_GENERIC_TYPE filter) { synchronized(mutex) { return c.count(filter); } }
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -278,6 +291,18 @@ public class COLLECTIONS
|
|||||||
public boolean equals(Object obj) { return c.equals(obj); }
|
public boolean equals(Object obj) { return c.equals(obj); }
|
||||||
@Override
|
@Override
|
||||||
public String toString() { return c.toString(); }
|
public String toString() { return c.toString(); }
|
||||||
|
@Override
|
||||||
|
public <E> void forEach(E input, BI_FROM_OBJECT_CONSUMER KSK_GENERIC_TYPE<E> action) { c.forEach(input, action); }
|
||||||
|
@Override
|
||||||
|
public boolean matchesAny(PREDICATE KEY_GENERIC_TYPE filter) { return c.matchesAny(filter); }
|
||||||
|
@Override
|
||||||
|
public boolean matchesNone(PREDICATE KEY_GENERIC_TYPE filter) { return c.matchesNone(filter); }
|
||||||
|
@Override
|
||||||
|
public boolean matchesAll(PREDICATE KEY_GENERIC_TYPE filter) { return c.matchesAll(filter); }
|
||||||
|
@Override
|
||||||
|
public KEY_TYPE findFirst(PREDICATE KEY_GENERIC_TYPE filter) { return c.findFirst(filter); }
|
||||||
|
@Override
|
||||||
|
public int count(PREDICATE KEY_GENERIC_TYPE filter) { return c.count(filter); }
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -5,6 +5,9 @@ import java.util.Objects;
|
|||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
import java.util.RandomAccess;
|
import java.util.RandomAccess;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
#if PRIMITIVES
|
||||||
|
import java.nio.JAVA_BUFFER;
|
||||||
|
#endif
|
||||||
|
|
||||||
import speiger.src.collections.PACKAGE.collections.COLLECTION;
|
import speiger.src.collections.PACKAGE.collections.COLLECTION;
|
||||||
#if !TYPE_OBJECT
|
#if !TYPE_OBJECT
|
||||||
@@ -204,7 +207,11 @@ public class LISTS
|
|||||||
a[offset] = element;
|
a[offset] = element;
|
||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
|
#if PRIMITIVES
|
||||||
|
@Override
|
||||||
|
public void fillBuffer(JAVA_BUFFER buffer) { buffer.put(element); }
|
||||||
|
#endif
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void removeElements(int from, int to) { throw new UnsupportedOperationException(); }
|
public void removeElements(int from, int to) { throw new UnsupportedOperationException(); }
|
||||||
#if TYPE_OBJECT
|
#if TYPE_OBJECT
|
||||||
@@ -357,6 +364,9 @@ public class LISTS
|
|||||||
@Override
|
@Override
|
||||||
public <K> K[] extractElements(int from, int to, Class<K> clz) { synchronized(mutex) { return l.extractElements(from, to, clz); } }
|
public <K> K[] extractElements(int from, int to, Class<K> clz) { synchronized(mutex) { return l.extractElements(from, to, clz); } }
|
||||||
|
|
||||||
|
#endif
|
||||||
|
#if PRIMITIVES
|
||||||
|
public void fillBuffer(JAVA_BUFFER buffer) { synchronized(mutex) { l.fillBuffer(buffer); } }
|
||||||
#endif
|
#endif
|
||||||
@Override
|
@Override
|
||||||
public LIST_ITERATOR KEY_GENERIC_TYPE listIterator() {
|
public LIST_ITERATOR KEY_GENERIC_TYPE listIterator() {
|
||||||
@@ -469,6 +479,10 @@ public class LISTS
|
|||||||
@Override
|
@Override
|
||||||
public <K> K[] extractElements(int from, int to, Class<K> clz) { throw new UnsupportedOperationException(); }
|
public <K> K[] extractElements(int from, int to, Class<K> clz) { throw new UnsupportedOperationException(); }
|
||||||
|
|
||||||
|
#endif
|
||||||
|
#if PRIMITIVES
|
||||||
|
public void fillBuffer(JAVA_BUFFER buffer) { l.fillBuffer(buffer); }
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@Override
|
@Override
|
||||||
public LIST_ITERATOR KEY_GENERIC_TYPE listIterator() {
|
public LIST_ITERATOR KEY_GENERIC_TYPE listIterator() {
|
||||||
|
|||||||
+38
@@ -1,15 +1,23 @@
|
|||||||
package speiger.src.collections.PACKAGE.utils;
|
package speiger.src.collections.PACKAGE.utils;
|
||||||
|
|
||||||
#if TYPE_OBJECT
|
#if TYPE_OBJECT
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
|
import java.util.function.Consumer;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
import speiger.src.collections.PACKAGE.collections.ITERATOR;
|
import speiger.src.collections.PACKAGE.collections.ITERATOR;
|
||||||
|
import speiger.src.collections.PACKAGE.collections.COLLECTION;
|
||||||
#if !TYPE_OBJECT
|
#if !TYPE_OBJECT
|
||||||
import speiger.src.collections.PACKAGE.functions.COMPARATOR;
|
import speiger.src.collections.PACKAGE.functions.COMPARATOR;
|
||||||
#endif
|
#endif
|
||||||
import speiger.src.collections.PACKAGE.queues.PRIORITY_DEQUEUE;
|
import speiger.src.collections.PACKAGE.queues.PRIORITY_DEQUEUE;
|
||||||
import speiger.src.collections.PACKAGE.queues.PRIORITY_QUEUE;
|
import speiger.src.collections.PACKAGE.queues.PRIORITY_QUEUE;
|
||||||
|
#if !TYPE_OBJECT
|
||||||
|
import speiger.src.collections.PACKAGE.functions.CONSUMER;
|
||||||
|
#endif
|
||||||
|
import speiger.src.collections.PACKAGE.functions.function.PREDICATE;
|
||||||
|
import speiger.src.collections.objects.functions.consumer.BI_FROM_OBJECT_CONSUMER;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A Helper class for PriorityQueues
|
* A Helper class for PriorityQueues
|
||||||
@@ -86,6 +94,14 @@ public class PRIORITY_QUEUES
|
|||||||
public void clear() { synchronized(mutex) { queue.clear(); } }
|
public void clear() { synchronized(mutex) { queue.clear(); } }
|
||||||
@Override
|
@Override
|
||||||
public void enqueue(KEY_TYPE e) { synchronized(mutex) { queue.enqueue(e); } }
|
public void enqueue(KEY_TYPE e) { synchronized(mutex) { queue.enqueue(e); } }
|
||||||
|
@Override
|
||||||
|
public void enqueueAll(KEY_TYPE[] e, int offset, int length) { synchronized(mutex) { queue.enqueueAll(e, offset, length); } }
|
||||||
|
@Override
|
||||||
|
public void enqueueAll(COLLECTION KEY_GENERIC_TYPE c) { synchronized(mutex) { queue.enqueueAll(c); } }
|
||||||
|
#if TYPE_OBJECT
|
||||||
|
@Override
|
||||||
|
public void enqueueAll(Collection<? extends CLASS_TYPE> c) { synchronized(mutex) { queue.enqueueAll(c); } }
|
||||||
|
#endif
|
||||||
@Override
|
@Override
|
||||||
public KEY_TYPE dequeue() { synchronized(mutex) { return queue.dequeue(); } }
|
public KEY_TYPE dequeue() { synchronized(mutex) { return queue.dequeue(); } }
|
||||||
@Override
|
@Override
|
||||||
@@ -102,6 +118,20 @@ public class PRIORITY_QUEUES
|
|||||||
public GENERIC_SPECIAL_KEY_BRACES<E> KEY_SPECIAL_TYPE[] TO_ARRAY(KEY_SPECIAL_TYPE[] input) { synchronized(mutex) { return queue.TO_ARRAY(input); } }
|
public GENERIC_SPECIAL_KEY_BRACES<E> KEY_SPECIAL_TYPE[] TO_ARRAY(KEY_SPECIAL_TYPE[] input) { synchronized(mutex) { return queue.TO_ARRAY(input); } }
|
||||||
@Override
|
@Override
|
||||||
public PRIORITY_QUEUE KEY_GENERIC_TYPE copy() { throw new UnsupportedOperationException(); }
|
public PRIORITY_QUEUE KEY_GENERIC_TYPE copy() { throw new UnsupportedOperationException(); }
|
||||||
|
@Override
|
||||||
|
public void forEach(CONSUMER KEY_SUPER_GENERIC_TYPE action) { synchronized(mutex) { queue.forEach(action); } }
|
||||||
|
@Override
|
||||||
|
public <E> void forEach(E input, BI_FROM_OBJECT_CONSUMER KSK_GENERIC_TYPE<E> action) { synchronized(mutex) { queue.forEach(input, action); } }
|
||||||
|
@Override
|
||||||
|
public boolean matchesAny(PREDICATE KEY_GENERIC_TYPE filter) { synchronized(mutex) { return queue.matchesAny(filter); } }
|
||||||
|
@Override
|
||||||
|
public boolean matchesNone(PREDICATE KEY_GENERIC_TYPE filter) { synchronized(mutex) { return queue.matchesNone(filter); } }
|
||||||
|
@Override
|
||||||
|
public boolean matchesAll(PREDICATE KEY_GENERIC_TYPE filter) { synchronized(mutex) { return queue.matchesAll(filter); } }
|
||||||
|
@Override
|
||||||
|
public KEY_TYPE findFirst(PREDICATE KEY_GENERIC_TYPE filter) { synchronized(mutex) { return queue.findFirst(filter); } }
|
||||||
|
@Override
|
||||||
|
public int count(PREDICATE KEY_GENERIC_TYPE filter) { synchronized(mutex) { return queue.count(filter); } }
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -123,6 +153,14 @@ public class PRIORITY_QUEUES
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void enqueueFirst(KEY_TYPE e) { synchronized(mutex) { dequeue.enqueueFirst(e); } }
|
public void enqueueFirst(KEY_TYPE e) { synchronized(mutex) { dequeue.enqueueFirst(e); } }
|
||||||
|
@Override
|
||||||
|
public void enqueueAllFirst(KEY_TYPE[] e, int offset, int length) { synchronized(mutex) { dequeue.enqueueAllFirst(e, offset, length); } }
|
||||||
|
@Override
|
||||||
|
public void enqueueAllFirst(COLLECTION KEY_GENERIC_TYPE c) { synchronized(mutex) { dequeue.enqueueAllFirst(c); } }
|
||||||
|
#if TYPE_OBJECT
|
||||||
|
@Override
|
||||||
|
public void enqueueAllFirst(Collection<? extends CLASS_TYPE> c) { synchronized(mutex) { dequeue.enqueueAllFirst(c); } }
|
||||||
|
#endif
|
||||||
@Override
|
@Override
|
||||||
public KEY_TYPE dequeueLast() { synchronized(mutex) { return dequeue.dequeueLast(); } }
|
public KEY_TYPE dequeueLast() { synchronized(mutex) { return dequeue.dequeueLast(); } }
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -22,6 +22,13 @@ public class ObjectArrayListTest
|
|||||||
testCastable(ObjectArrayList.wrap("Test", "Testing", "Testing stuff"), true);
|
testCastable(ObjectArrayList.wrap("Test", "Testing", "Testing stuff"), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testEmptyCreation()
|
||||||
|
{
|
||||||
|
ObjectArrayList<String> test = ObjectArrayList.of(String.class);
|
||||||
|
Assert.assertTrue(test.isCastable());
|
||||||
|
}
|
||||||
|
|
||||||
public <T> void testCastable(IObjectArray<T> castable, boolean result)
|
public <T> void testCastable(IObjectArray<T> castable, boolean result)
|
||||||
{
|
{
|
||||||
Assert.assertTrue(castable.isCastable() == result);
|
Assert.assertTrue(castable.isCastable() == result);
|
||||||
|
|||||||
Reference in New Issue
Block a user