Queues are now copyable
This commit is contained in:
parent
61d7a88c82
commit
0c4ef7f6c4
|
@ -1,7 +1,7 @@
|
||||||
package speiger.src.collections.PACKAGE.queues;
|
package speiger.src.collections.PACKAGE.queues;
|
||||||
|
|
||||||
#if TYPE_OBJECT
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
#if TYPE_OBJECT
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
#endif
|
#endif
|
||||||
|
@ -222,6 +222,15 @@ public class ARRAY_FIFO_QUEUE KEY_GENERIC_TYPE implements PRIORITY_DEQUEUE KEY_G
|
||||||
@Override
|
@Override
|
||||||
public void onChanged() {}
|
public void onChanged() {}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ARRAY_FIFO_QUEUE KEY_GENERIC_TYPE copy() {
|
||||||
|
ARRAY_FIFO_QUEUE KEY_GENERIC_TYPE queue = new ARRAY_FIFO_QUEUEBRACES();
|
||||||
|
queue.first = first;
|
||||||
|
queue.last = last;
|
||||||
|
queue.array = Arrays.copyOf(array, array.length);
|
||||||
|
return queue;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public COMPARATOR KEY_SUPER_GENERIC_TYPE comparator() { return null; }
|
public COMPARATOR KEY_SUPER_GENERIC_TYPE comparator() { return null; }
|
||||||
|
|
||||||
|
|
|
@ -322,6 +322,16 @@ public class ARRAY_PRIORITY_QUEUE KEY_GENERIC_TYPE implements PRIORITY_QUEUE KEY
|
||||||
return new Iter();
|
return new Iter();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ARRAY_PRIORITY_QUEUE KEY_GENERIC_TYPE copy() {
|
||||||
|
ARRAY_PRIORITY_QUEUE KEY_GENERIC_TYPE queue = new ARRAY_PRIORITY_QUEUEBRACES();
|
||||||
|
queue.firstIndex = firstIndex;
|
||||||
|
queue.size = size;
|
||||||
|
queue.comparator = comparator;
|
||||||
|
queue.array = Arrays.copyOf(array, array.length);
|
||||||
|
return queue;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public COMPARATOR KEY_SUPER_GENERIC_TYPE comparator() {
|
public COMPARATOR KEY_SUPER_GENERIC_TYPE comparator() {
|
||||||
return comparator;
|
return comparator;
|
||||||
|
|
|
@ -319,6 +319,15 @@ public class HEAP_PRIORITY_QUEUE KEY_GENERIC_TYPE implements PRIORITY_QUEUE KEY_
|
||||||
ARRAYS.shiftDown(array, size, 0, comparator);
|
ARRAYS.shiftDown(array, size, 0, comparator);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HEAP_PRIORITY_QUEUE KEY_GENERIC_TYPE copy() {
|
||||||
|
HEAP_PRIORITY_QUEUE KEY_GENERIC_TYPE queue = new HEAP_PRIORITY_QUEUEBRACES();
|
||||||
|
queue.size = size;
|
||||||
|
queue.comparator = comparator;
|
||||||
|
queue.array = Arrays.copyOf(array, array.length);
|
||||||
|
return queue;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public COMPARATOR KEY_SUPER_GENERIC_TYPE comparator() {
|
public COMPARATOR KEY_SUPER_GENERIC_TYPE comparator() {
|
||||||
return comparator;
|
return comparator;
|
||||||
|
|
|
@ -22,4 +22,7 @@ public interface PRIORITY_DEQUEUE KEY_GENERIC_TYPE extends PRIORITY_QUEUE KEY_GE
|
||||||
* @return the Last Element within the dequeue without deleting it
|
* @return the Last Element within the dequeue without deleting it
|
||||||
*/
|
*/
|
||||||
public default KEY_TYPE last() { return peek(size()-1); }
|
public default KEY_TYPE last() { return peek(size()-1); }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PRIORITY_DEQUEUE KEY_GENERIC_TYPE copy();
|
||||||
}
|
}
|
|
@ -70,6 +70,15 @@ public interface PRIORITY_QUEUE KEY_GENERIC_TYPE extends ITERABLE KEY_GENERIC_TY
|
||||||
*/
|
*/
|
||||||
public void onChanged();
|
public void onChanged();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A Function that does a shallow clone of the PriorityQueue itself.
|
||||||
|
* This function is more optimized then a copy constructor since the PriorityQueue does not have to be unsorted/resorted.
|
||||||
|
* It can be compared to Cloneable but with less exception risk
|
||||||
|
* @return a Shallow Copy of the PriorityQueue
|
||||||
|
* @note Wrappers and view PriorityQueues will not support this feature
|
||||||
|
*/
|
||||||
|
public PRIORITY_QUEUE KEY_GENERIC_TYPE copy();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the sorter of the Queue, can be null
|
* @return the sorter of the Queue, can be null
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -100,6 +100,8 @@ public class PRIORITY_QUEUES
|
||||||
public COMPARATOR KEY_SUPER_GENERIC_TYPE comparator() { synchronized(mutex) { return queue.comparator(); } }
|
public COMPARATOR KEY_SUPER_GENERIC_TYPE comparator() { synchronized(mutex) { return queue.comparator(); } }
|
||||||
@Override
|
@Override
|
||||||
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
|
||||||
|
public PRIORITY_QUEUE KEY_GENERIC_TYPE copy() { throw new UnsupportedOperationException(); }
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -123,5 +125,7 @@ public class PRIORITY_QUEUES
|
||||||
public void enqueueFirst(KEY_TYPE e) { synchronized(mutex) { dequeue.enqueueFirst(e); } }
|
public void enqueueFirst(KEY_TYPE e) { synchronized(mutex) { dequeue.enqueueFirst(e); } }
|
||||||
@Override
|
@Override
|
||||||
public KEY_TYPE dequeueLast() { synchronized(mutex) { return dequeue.dequeueLast(); } }
|
public KEY_TYPE dequeueLast() { synchronized(mutex) { return dequeue.dequeueLast(); } }
|
||||||
|
@Override
|
||||||
|
public PRIORITY_DEQUEUE KEY_GENERIC_TYPE copy() { throw new UnsupportedOperationException(); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue