Échange de tableau en Java

Rupam Yadav 12 octobre 2023
  1. Utiliser des opérateurs numériques pour échanger deux tableaux en Java
  2. Utiliser les opérateurs Bitwise pour échanger deux tableaux en Java
  3. Utilisez Collections.swap() pour échanger deux éléments d’un tableau en Java
Échange de tableau en Java

Dans cet article, nous examinerons différentes approches pour échanger deux tableaux en Java. Au lieu d’utiliser une troisième variable pour permuter deux tableaux, nous pouvons utiliser des opérateurs arithmétiques et binaires.

Utiliser des opérateurs numériques pour échanger deux tableaux en Java

Ici, dans le code donné ci-dessous, nous avons deux tableaux, a et b, qui contiennent des valeurs de type int. La longueur des deux tableaux est la même.

Nous utilisons des opérateurs arithmétiques pour échanger les valeurs de type a et b. Pour la première itération, nous avons i égal à 0 et la condition (i<2), de sorte que les instructions arithmétiques à l’intérieur de la boucle seront exécutées jusqu’à ce que la condition échoue.

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() renvoie la valeur absolue de l’argument passé. Si l’argument n’est pas négatif, il renvoie l’argument, et s’il est négatif, alors la négation de l’argument est renvoyée. Cela fonctionnera de la même manière pour la deuxième et la troisième itération.

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);
  }
}

Production :

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

Utiliser les opérateurs Bitwise pour échanger deux tableaux en Java

Le XOR ou ^ est un opérateur binaire qui renvoie bit par bit le XOR d’une entrée. Si les bits correspondants sont différents, il donne 1, sinon 0. Pour la première itération, nous avons firstArr[0] = firstArr[0] ^ secondArr[0] = 2 ^ 6. La représentation binaire de 2 est 0010, et 6 est 0110.

La représentation binaire XOR de 2 et 6 est

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

Nous pouvons donc échanger des éléments de la matrice en utilisant les opérateurs bitwise.

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));
  }
}

Production :

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

Utilisez Collections.swap() pour échanger deux éléments d’un tableau en Java

La méthode swap() de la classe Collections échange des éléments à la position spécifiée dans la liste spécifiée. Nous convertissons notre firstArr en une liste en utilisant Arrays.asList() et nous la passons ensuite à la méthode swap() avec les positions 0 et 2. Elle échange le mot à l’index 0 avec le mot à l’index 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));
  }
}

Production :

first[] before swapping : [Hello, World, Happy, Coding]
first[] after swapping : [Happy, World, Hello, Coding]
Auteur: 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

Article connexe - Java Array