
de.vandermeer.skb.collections.QueueStrategy Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of skb-collections Show documentation
Show all versions of skb-collections Show documentation
Strategies for Java collections
The newest version!
/* Copyright 2014 Sven van der Meer
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package de.vandermeer.skb.collections;
import java.util.ArrayDeque;
import java.util.Collection;
import java.util.LinkedList;
import java.util.PriorityQueue;
import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedDeque;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.LinkedBlockingDeque;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.LinkedTransferQueue;
import java.util.concurrent.PriorityBlockingQueue;
import java.util.concurrent.SynchronousQueue;
/**
* Strategy for queues.
*
* @author Sven van der Meer <[email protected]>
* @version v0.0.4 build 150619 (19-Jun-15) for Java 1.8
*/
public enum QueueStrategy implements IsQueueStrategy {
/** Default Queue, results in a LinkedList. */
DEFAULT,
/** ArrayBlockingQueue from java-utils. */
//ARRAY_BLOCKING_QUEUE, --> doesn work here because it uses capacity in constructor
/** Concurrent linked queue from java-utils. */
CONCURRENT_LINKED_QUEUE,
/** Blocking queue from java-utils. */
LINKED_BLOCKING_QUEUE,
/** Linked list from java-utils. */
LINKED_LIST,
/** Linked transfer queue from java-utils. */
LINKED_TRANSFER_QUEUE,
/** Priority blocking queue from java-utils. */
PRIORITY_BLOCKING_QUEUE,
/** Priority queue from java-utils. */
PRIORITY_QUEUE,
/** Synchronous queue from java-utils. */
SYNCHRONOUS_QUEUE,
/** ArrayDeque queue from java-utils. */
ARRAY_DEQUE,
/** ConcurrentLinkedDeque queue from java-utils. */
CONCURRENT_LINKED_DEQUE,
/** DelayQueue queue from java-utils. */
//DELAY_QUEUE, --> doesn't work cause type extends Delayed
/** LinkedBlockingDeque queue from java-utils. */
LINKED_BLOCKING_DEQUE,
;
@Override
public boolean isList() {
return false;
}
@Override
public boolean isSet() {
return false;
}
@Override
public boolean isQueue() {
return true;
}
@Override
public Queue get(Collection collection) {
Queue ret;
switch(this){
case CONCURRENT_LINKED_QUEUE:
ret = new ConcurrentLinkedQueue();
break;
case LINKED_BLOCKING_QUEUE:
ret = new LinkedBlockingQueue();
break;
case LINKED_TRANSFER_QUEUE:
ret = new LinkedTransferQueue();
break;
case PRIORITY_BLOCKING_QUEUE:
ret = new PriorityBlockingQueue();
break;
case PRIORITY_QUEUE:
ret = new PriorityQueue();
break;
case SYNCHRONOUS_QUEUE:
ret = new SynchronousQueue();
break;
case LINKED_LIST:
case DEFAULT:
default:
ret = new LinkedList();
break;
case ARRAY_DEQUE:
ret = new ArrayDeque();
break;
case CONCURRENT_LINKED_DEQUE:
ret = new ConcurrentLinkedDeque();
break;
case LINKED_BLOCKING_DEQUE:
ret = new LinkedBlockingDeque();
break;
}
if(collection!=null){
ret.addAll(collection);
}
return ret;
}
@Override
public Queue get(Class T) {
Queue ret;
switch(this){
case CONCURRENT_LINKED_QUEUE:
ret = new ConcurrentLinkedQueue();
break;
case LINKED_BLOCKING_QUEUE:
ret = new LinkedBlockingQueue();
break;
case LINKED_TRANSFER_QUEUE:
ret = new LinkedTransferQueue();
break;
case PRIORITY_BLOCKING_QUEUE:
ret = new PriorityBlockingQueue();
break;
case PRIORITY_QUEUE:
ret = new PriorityQueue();
break;
case SYNCHRONOUS_QUEUE:
ret = new SynchronousQueue();
break;
case LINKED_LIST:
case DEFAULT:
default:
ret = new LinkedList();
break;
case ARRAY_DEQUE:
ret = new ArrayDeque();
break;
case CONCURRENT_LINKED_DEQUE:
ret = new ConcurrentLinkedDeque();
break;
case LINKED_BLOCKING_DEQUE:
ret = new LinkedBlockingDeque();
break;
}
return ret;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy