Scambia array in Java

Rupam Yadav 12 ottobre 2023
  1. Utilizza gli operatori numerici per scambiare due array in Java
  2. Utilizza gli operatori bit per bit per scambiare due array in Java
  3. Usa Collections.swap() per scambiare due elementi di un array in Java
Scambia array in Java

In questo articolo, esamineremo diversi approcci per scambiare due array in Java. Invece di usare una terza variabile per scambiare due array, possiamo usare gli operatori aritmetici e bit per bit.

Utilizza gli operatori numerici per scambiare due array in Java

Qui nel codice riportato di seguito, abbiamo due array, a e b, che contengono valori di tipo int. La lunghezza dei due array è la stessa.

Usiamo operatori aritmetici per scambiare a e b. Per la prima iterazione, abbiamo i uguale a 0 e condizione (i<2), in modo che le istruzioni aritmetiche all’interno del bucle vengano eseguite fino a quando la condizione fallisce.

a[0] = a[0] - b[0] = 5 - 4 = 1

    b[0] = a[0] + b[0] = 1 + 4 = 5

    a[0] = GetAbsoluteValue(a[0] - b[0]) = 1 - 5 = GetAbsoluteValue(-4) = 4

Math.abs() restituisce il valore assoluto dell’argomento passato. Se l’argomento non è negativo, restituisce l’argomento e, se è negativo, viene restituita la negazione dell’argomento. Funzionerà allo stesso modo per la seconda e la terza iterazione.

import java.util.Arrays;
public class SwapArrayNumeric {
  public static void main(String[] args) throws Exception {
    int[] a = {5, 9};
    int[] b = {4, 3};
    System.out.println("a[] before swapping : " + Arrays.toString(a));
    System.out.println("b[] before swapping : " + Arrays.toString(b));
    for (int i = 0; i < a.length; i++) {
      a[i] = a[i] - b[i];
      b[i] = a[i] + b[i];
      a[i] = GetAbsoluteValue(a[i] - b[i]);
    }
    System.out.println("a[] after swapping : " + Arrays.toString(a));
    System.out.println("b[] after swapping : " + Arrays.toString(b));
  }
  public static int GetAbsoluteValue(int a) {
    return Math.abs(a);
  }
}

Produzione:

a[] before swapping : [5, 9]
b[] before swapping : [4, 3]
a[] after swapping : [4, 3]
b[] after swapping : [5, 9]

Utilizza gli operatori bit per bit per scambiare due array in Java

Lo XOR o ^ bit per bit è un operatore binario che restituisce bit per bit XOR di un ingresso. Se i bit corrispondenti sono diversi, dà 1, altrimenti 0. Per la prima iterazione abbiamo firstArr[0] = firstArr[0] ^ secondArr[0] = 2 ^ 6. La rappresentazione binaria di 2 è 0010 e 6 è 0110.

Lo XOR bit per bit di 2 e 6 è

0010 ^ 0110 = 0100 = 4 (in decimal)

firstArr[0] = firstArr[0] ^ secondArr[0] = 2 ^ 6 = 4

secondArr[0] = firstArr[0] ^ secondArr[0] = 4 ^ 6 = 2

firstArr[0] = firstArr[0] ^ secondArr[0] = 4 ^ 2 = 6

Quindi possiamo scambiare elementi dell’array usando gli operatori bit per bit.

import java.util.Arrays;

public class SwapArrayBitwise {
  public static void main(String[] args) throws Exception {
    int[] firstArr = {2, 4};
    int[] secondArr = {6, 3};
    System.out.println("firstArr before swapping : " + Arrays.toString(firstArr));
    System.out.println("secondArr before swapping : " + Arrays.toString(secondArr));
    for (int i = 0; i < firstArr.length; i++) {
      firstArr[i] = firstArr[i] ^ secondArr[i];
      secondArr[i] = firstArr[i] ^ secondArr[i];
      firstArr[i] = firstArr[i] ^ secondArr[i];
    }
    System.out.println("firstArr after swapping : " + Arrays.toString(firstArr));
    System.out.println("secondArr after swapping : " + Arrays.toString(secondArr));
  }
}

Produzione:

firstArr before swapping : [2, 4]
secondArr before swapping : [6, 3]
firstArr after swapping : [6, 3]
secondArr after swapping : [2, 4]

Usa Collections.swap() per scambiare due elementi di un array in Java

Il metodo swap() della classe Collections scambia gli elementi nella posizione specificata nell’lista specificato. Convertiamo il nostro firstArr in una lista usando Arrays.asList() e poi lo passiamo al metodo swap() con le posizioni 0 e 2. Scambia la parola all’indice 0 con la parola all’indice 2.

import java.util.Collections;
import java.util.List;

public class SwapTwoElements {
  public static void main(String[] args) throws Exception {
    String[] firstArr = {"Hello", "World", "Happy", "Coding"};
    System.out.println("first[] before swapping : " + Arrays.toString(firstArr));
    List<String> a = Arrays.asList(firstArr);
    Collections.swap(a, 0, 2);

    System.out.println("first[] after swapping : " + Arrays.toString(firstArr));
  }
}

Produzione:

first[] before swapping : [Hello, World, Happy, Coding]
first[] after swapping : [Happy, World, Hello, Coding]
Autore: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

Articolo correlato - Java Array