Échange de tableau en Java
- Utiliser des opérateurs numériques pour échanger deux tableaux en Java
- Utiliser les opérateurs Bitwise pour échanger deux tableaux en Java
-
Utilisez
Collections.swap()
pour échanger deux éléments d’un 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]
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