import java.util.EnumSet;
import java.util.Iterator;
import java.util.Set;

/**
 * {@link <a href=
 * "https://[Log in to view URL]"
 * target= "_blank">Primitive EnumSet<E></a>}
 * 
 * @author itammb ( Italia Massimiliano Buscati )
 * @version JDK 1.15
 *
 */
class Main {
	public static class UniTestEnumSet {
		public static enum Game {
			CRICKET, HOCKEY, TENNIS
		}

		public void applayAllOf() {
			applayIterator(createTest());
		}

		/**
		 * @see EnumSet#range(Enum, Enum)
		 *
		 */
		public void applayRange(Game from, Game to) {
			applayIterator(EnumSet.range(from, to));
		}

		/**
		 * @see EnumSet#add(Object)
		 *
		 */
		public void applayAdd(Set<Game> buffer) {
			buffer.clear();

			buffer.add(Game.TENNIS);

			applayIterator(buffer);
		}

		/**
		 * @see EnumSet#remove(Object)
		 *
		 */
		public void applayRemove(Set<Game> buffer) {
			buffer.remove(Game.TENNIS);

			applayIterator(buffer);
		}

		public void applayEquals(Set<Game> source) {
			Set<Game> other = EnumSet.range(Game.CRICKET, Game.TENNIS);

			applayEquals(source, other);

			other = EnumSet.range(Game.CRICKET, Game.HOCKEY);

			applayEquals(source, other);
		}

		/**
		 * @see EnumSet#equals(Object)
		 *
		 */
		private void applayEquals(Set<Game> source, Set<Game> other) {
			applayIterator(source);
			applayIterator(other);
			System.out.println(source.equals(other));
		}

		public void applayRemoveAll(Set<Game> source) {
			Set<Game> other = EnumSet.range(Game.CRICKET, Game.TENNIS);

			applayRemoveAll(source, other);
		}

		/**
		 * @see EnumSet#removeAll(java.util.Collection)
		 *
		 */
		private void applayRemoveAll(Set<Game> source, Set<Game> other) {
			System.out.println(source.removeAll(other));
			applayIterator(source);
			applayIterator(other);
		}

		/**
		 * @see EnumSet#of(Enum)
		 *
		 */
		public void applayRetainAll(Set<Game> source) {
			Set<Game> other = EnumSet.of(Game.CRICKET);

			applayRetainAll(source, other);
		}

		/**
		 * @see EnumSet#retainAll(java.util.Collection)
		 *
		 */
		private void applayRetainAll(Set<Game> source, Set<Game> other) {
			System.out.println(source.retainAll(other));
			applayIterator(source);
			applayIterator(other);
		}

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

		/**
		 * @see Set#iterator()
		 * @see Iterator
		 * 
		 */
		public void applayIterator(Set<Game> buffer) {
			if (buffer.isEmpty())
				System.out.print("[]");
			else
				for (Iterator<Game> itr = buffer.iterator(); itr.hasNext();)
					System.out.print("e=" + itr.next() + " ");

			println();
		}

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

		/**
		 * @see EnumSet#allOf(Class)
		 *
		 */
		public static EnumSet<Game> createTest() {
			return EnumSet.allOf(Game.class);
		}
	}

	public static void main(String args[]) throws Exception {
		// Unit test - crea una struttura 
		new UniTestEnumSet().applayAllOf();

		// Unit test - crea una struttura a partire da due elementi come estremi
		new UniTestEnumSet().applayRange(UniTestEnumSet.Game.CRICKET, UniTestEnumSet.Game.TENNIS);

		// Unit test - aggiunge un elemento nella struttura
		new UniTestEnumSet().applayAdd(UniTestEnumSet.createTest());

		// Unit test - verifica se due strutture sono uguali ( stessi elementi )
		new UniTestEnumSet().applayEquals(UniTestEnumSet.createTest());

		// Unit test - rimuove un elemento dalla struttura
		new UniTestEnumSet().applayRemove(UniTestEnumSet.createTest());
		
		// Unit test - rimuove elementi concordi da una struttura ( sorgente ) rispetto
		// a un'altra		
		new UniTestEnumSet().applayRemoveAll(UniTestEnumSet.createTest());
		
		// Unit test - rimuove elementi discordi da una struttura ( sorgente ) rispetto
		// a un'altra
		new UniTestEnumSet().applayRetainAll(UniTestEnumSet.createTest());

		// Unit test - attraversa una struttura
		new UniTestEnumSet().applayforEach(UniTestEnumSet.createTest());

		// Unit test - attraversa una struttura con l'ausilio di un'interfaccia
		// Iteretor<E>
		new UniTestEnumSet().applayIterator(UniTestEnumSet.createTest());
	}
}

Embed on website

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