Troca de arrays em Java
- Use operadores numéricos para trocar duas arrays em Java
- Use operadores bit a bit para trocar duas arrays em Java
-
Use
Collections.swap()
para trocar dois elementos de um array em Java
Neste artigo, examinaremos diferentes abordagens para trocar dois arrays em Java. Em vez de usar uma terceira variável para trocar duas arrays, podemos usar operadores aritméticos e bit a bit.
Use operadores numéricos para trocar duas arrays em Java
Aqui, no código fornecido a seguir, temos duas arrays, a
e b
, que contêm valores do tipo int
. O comprimento das duas arrays é o mesmo.
Usamos operadores aritméticos para trocar a
e b
. Para a primeira iteração, temos i
igual a 0
e condição (i<2)
, de modo que as declarações aritméticas dentro do loop serão executadas até que a condição falhe.
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()
retorna o valor absoluto do argumento passado. Se o argumento não for negativo, ele retornará o argumento e, se for negativo, a negação do argumento será retornada. Isso funcionará da mesma maneira para a segunda e a terceira iteração.
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);
}
}
Resultado:
a[] before swapping : [ 5, 9 ] b[] before swapping : [ 4, 3 ] a[] after swapping
: [ 4, 3 ] b[] after swapping : [ 5, 9 ]
Use operadores bit a bit para trocar duas arrays em Java
O bit a bit XOR
ou ^
é um operador binário que retorna bit a bit XOR
de uma entrada. Se os bits correspondentes forem diferentes, dá 1, senão 0. Para a primeira iteração, temos firstArr[0] = firstArr[0] ^ secondArr[0] = 2 ^ 6
. A representação binária de 2 é 0010
e 6 é 0110
.
XOR
bit a bit de 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
Portanto, podemos trocar elementos do array usando os operadores bit a 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));
}
}
Resultado:
firstArr before swapping : [2, 4]
secondArr before swapping : [6, 3]
firstArr after swapping : [6, 3]
secondArr after swapping : [2, 4]
Use Collections.swap()
para trocar dois elementos de um array em Java
O método swap()
da classe Collections
troca elementos na posição especificada na lista especificada. Convertemos nosso firstArr
em uma lista usando Arrays.asList()
e, em seguida, passamos para o método swap()
com as posições 0
e 2
. Ele troca a palavra no índice 0 pela palavra no índice 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));
}
}
Resultado:
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