import java.util.Arrays;
import java.util.Comparator;

/**
 * {@link <a href=
 * "https://[Log in to view URL]"
 * target="_blank">Manipolazione di un array</a>}
 * 
 * @author itammb ( Italia Massimiliano Buscati )
 * @version JDK 1.15
 *
 */
class Main {
	private static final class User {
		private final int id;
		private final String alias;

		public String getAlias() {
			return alias;
		}

		public int getId() {
			return id;
		}

		@Override
		public String toString() {
			return "User [id=" + id + ", alias=" + alias + "]";
		}

		protected User(int id, String alias) {
			this.id = id;
			this.alias = alias;
		}
	}

	/**
	 * @see Comparator
	 *
	 */
	private static class ComparatorImp implements Comparator<Integer> {
		public int compare(Integer a, Integer b) {
			// return Integer.compare(a, b);
			return a == b ? 0 : (a < b) ? -1 : 1;
		}
	}

	public static void toInitializeAndAccessPrimitiveArray() {
		// dichiarazione di un array di interi
		int[] array;

		// allocazione di 5 elementi, interi e contigui, in memoria
		array = new int[5];

		// inizializzazione del primo elemento di un int[]
		array[0] = 10;

		// così via...
		array[1] = 20;
		array[2] = 30;
		array[3] = 40;
		array[4] = 50;

		// accesso alla struttura int[]

		for (int i = 0; i < array.length; i++)
			System.out.println(i + " -> " + array[i]);

		for (int elemento : array)
			System.out.println(elemento);
	}

	public static void toInitializeAndAccessNoPrimitiveArray() {
		User[] userRegister = new User[5];

		// assegnazione di un'istanza della classe User a una locazone del User[]

		userRegister[0] = new User(1, "Massimiliano");
		userRegister[1] = new User(2, "Italo");
		userRegister[2] = new User(3, "Fabio");
		userRegister[3] = new User(4, "Roberto");
		userRegister[4] = new User(5, "Simone");

		// accesso alla struttura User[]

		// accesso - da evitare
		// for (User user : userRegister)
		//   System.out.println( user.id + " -- " + user.alias);

		// accesso - consigliato
		for (User user : userRegister)
			System.out.println(user.getId() + " -- " + user.getAlias());
	}

	public static void toInitializeAndAccessNoPrimitiveArray2D() {
		int matrix[][] = { { 2, 7, 9 }, { 3, 6, 1 }, { 7, 4, 2 } };

		for (int i = 0; i < matrix.length; i++) {
			for (int j = 0; j < 3; j++)
				System.out.print(matrix[i][j] + " ");

			System.out.println();
		}
	}

	/**
	 * @see Arrays#copyOf(int[], int)
	 * @see Arrays#sort(int[])
	 * @see Arrays#compare(int[], int[])
	 * 
	 * {@link Arrays#stream(int[])} {@link java.util.stream.IntStream#boxed()}
	 * {@link java.util.stream.Stream#toArray(java.util.function.IntFunction)}
	 *
	 */
	public static void applayArraysLibrary() {
		// copia di un int[]
		int[] array = new int[] { 3, 1, 2, 5, 4 };
		int[] arryCopy = Arrays.copyOf(array, array.length);
		for (int i : arryCopy)
			System.out.print(i + " ");

		if (array != arryCopy)
			System.out.println("\r\narray != arryCopy (indirizzo in memoria)");

		// ricerca di un int[]
		// prima di una ricerca binaria è necessario ordinare la struttura dati
		Arrays.sort(array);
		System.out.println("la posizione del numero 3 nel int[] (ordinato) è: " + Arrays.binarySearch(array, 3));

		// compara due int[]
		System.out.println(Arrays.compare(array, arryCopy));

		// converte int[] verso Integer[]
		Integer[] wrapperArray = Arrays.stream(array).boxed().toArray(Integer[]::new);
		Integer[] wrapperArray_ = Arrays.stream(array).boxed().toArray(Integer[]::new);

		// compara due Integer[] tramite un interfaccia Comparator<Integer>
		System.out.println(Arrays.compare(wrapperArray, wrapperArray_, new ComparatorImp()));

		if (wrapperArray != wrapperArray_)
			System.out.println("\r\nwrapperArray != wrapperArray_ (indirizzo in memoria)");
	}

	public static void main(String args[]) throws Exception {
		// Unit test - inizializzazione e accesso a un array di elementi di tipo
		// primitivo
		toInitializeAndAccessPrimitiveArray();

		System.out.println();

		// Unit test - inizializzazione e accesso a un array di elementi di tipo
		// strutturato
		toInitializeAndAccessNoPrimitiveArray();

		System.out.println();

		// Unit test - inizializzazione e accesso a un array 2D di elementi di tipo
		// primitivo
		toInitializeAndAccessNoPrimitiveArray2D();

		System.out.println();

		// Unit test - libreria Arrays
		applayArraysLibrary();
	}
}

Embed on website

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