import java.util.ArrayDeque;
import java.util.Collection;
import java.util.Collections;
import java.util.Deque;
import java.util.Iterator;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * {@link <a href=
 * "https://[Log in to view URL]"
 * target= "_blank">Primitive ArrayDeque<E></a>}
 * 
 * @author itammb ( Italia Massimiliano Buscati )
 * @version JDK 1.15
 *
 */

class Main {

	/**
	 * @see Deque#offerFirst(Object)
	 *
	 */
	public static void applayMethodOfferFirst(Deque<Integer> buffer, Integer element) {
		applayLoop(buffer);
		buffer.offerFirst(element);
		applayLoop(buffer);
	}

	/**
	 * @see Deque#peekFirst()
	 *
	 */
	public static void applayMethodPeekFirst(Deque<Integer> buffer) {
		applayLoop(buffer);
		System.out.println(buffer.peekFirst());
		applayLoop(buffer);
	}

	/**
	 * @see Deque#pollFirst()
	 *
	 */
	public static void applayMethodPollFirst(Deque<Integer> buffer) {
		applayLoop(buffer);
		System.out.println(buffer.pollFirst());
		applayLoop(buffer);
	}

	/**
	 * @see Deque#offerLast(Object)
	 *
	 */
	public static void applayMethodOfferLast(Deque<Integer> buffer, Integer element) {
		applayLoop(buffer);
		buffer.offerLast(element);
		applayLoop(buffer);
	}

	/**
	 * @see Deque#peekLast()
	 *
	 */
	public static void applayMethodPeekLast(Deque<Integer> buffer) {
		applayLoop(buffer);
		System.out.println(buffer.peekLast());
		applayLoop(buffer);
	}

	/**
	 * @see Deque#pollLast()
	 *
	 */
	public static void applayMethodPollLast(Deque<Integer> buffer) {
		applayLoop(buffer);
		System.out.println(buffer.pollLast());
		applayLoop(buffer);
	}

	/**
	 * @see Collections#sort(List)
	 *
	 */
	public static void applaySort(Deque<Integer> buffer) {
		List<Integer> source = applayStream(buffer);
		Collections.sort(source);

		buffer = new ArrayDeque<Integer>((Collection<Integer>) source);
		applayLoop(buffer);
	}

	/**
	 * @see Deque#stream()
	 * @see Stream#collect(java.util.stream.Collector)
	 * @see Collectors#toList()
	 *
	 */
	private static List<Integer> applayStream(Deque<Integer> source) {
		Stream<Integer> stream = source.stream();
		return stream.collect(Collectors.toList());
	}

	/**
	 * @see Deque#forEach(java.util.function.Consumer)
	 *
	 */
	public static void applayLoop(Deque<Integer> buffer) {
		buffer.forEach(i -> System.out.print("e=" + i + " "));
		println();
	}

	/**
	 * @see Deque#iterator()
	 * @see Iterator#hasNext()
	 *
	 */
	public static void applayMethodIterator(Deque<Integer> buffer) {
		for (Iterator<Integer> itr = buffer.iterator(); itr.hasNext();)
			System.out.print("e=" + itr.next() + " ");

		println();
	}

	private static void println() {
		System.out.println();
	}

	/**
	 * @see ArrayDeque#add(Object)
	 *
	 */
	private static ArrayDeque<Integer> createBufferTest() {
		return new ArrayDeque<Integer>() {
			private static final long serialVersionUID = -69L;

			{
				add((Integer) 6);
				add((Integer) 5);
				add((Integer) 3);
				add((Integer) 8);
				add((Integer) 0);
				add((Integer) 1);
				add((Integer) 7);
			}
		};
	}

	public static void main(String args[]) throws Exception {

		// Unit test - attraversa una struttura
		applayLoop(createBufferTest());

		// Unit test - attraversa una struttura con l'ausilio di un'interfaccia
		// Iteretor<E>
		applayMethodIterator(createBufferTest());

		// Unit test - aggiunge un elemento in testa alla struttura
		applayMethodOfferFirst(createBufferTest(), 4);

		// Unit test - estrazione dell'elemento in testa alla struttura ( SENZA
		// RIMOZIONE )
		applayMethodPeekFirst(createBufferTest());

		// Unit test - estrazione dell'elemento in testa alla struttura ( CON RIMOZIONE
		// )
		applayMethodPollFirst(createBufferTest());

		// Unit test - aggiunge un elemento in coda alla struttura
		applayMethodOfferLast(createBufferTest(), 4);

		// Unit test - estrazione dell'elemento in coda alla struttura ( SENZA
		// RIMOZIONE )
		applayMethodPeekLast(createBufferTest());

		// Unit test - estrazione dell'elemento in coda alla struttura ( CON RIMOZIONE
		// )
		applayMethodPollLast(createBufferTest());

		// Unit test - ordina una struttura
		applaySort(createBufferTest());
	}
}

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: