Java에서 배열 교체
이 기사에서는 Java에서 두 배열을 교체하는 다양한 접근 방식을 살펴 보겠습니다. 세 번째 변수를 사용하여 두 배열을 교체하는 대신 산술 및 비트 연산자를 사용할 수 있습니다.
숫자 연산자를 사용하여 Java에서 두 배열 교체
아래의 코드에는int
유형 값을 보유하는a
와b
두 개의 배열이 있습니다. 두 배열의 길이는 동일합니다.
산술 연산자를 사용하여a
와b
를 교체합니다. 첫 번째 반복에서 우리는 0
과 같은 i
와 조건 (i<2)
를 가지므로 조건이 실패 할 때까지 루프 내부의 산술 문이 실행됩니다.
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()
는 전달 된 인수의 절대 값을 반환합니다. 인수가 음수가 아니면 인수를 반환하고 음수이면 인수의 부정을 반환합니다. 이는 두 번째 및 세 번째 반복에 대해 동일한 방식으로 작동합니다.
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);
}
}
출력:
a[] before swapping : [5, 9]
b[] before swapping : [4, 3]
a[] after swapping : [4, 3]
b[] after swapping : [5, 9]
비트 연산자를 사용하여 Java에서 두 배열 교환
비트XOR
또는^
는 입력의XOR
을 비트 단위로 반환하는 이항 연산자입니다. 해당 비트가 다르면 1을, 그렇지 않으면 0을 제공합니다. 첫 번째 반복에서는firstArr[0] = firstArr[0] ^ secondArr[0] = 2 ^ 6
이 있습니다. 2의 이진 표현은 0010
이고 6은 0110
입니다.
2와 6의 비트XOR
은
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
따라서 비트 연산자를 사용하여 배열의 요소를 바꿀 수 있습니다.
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));
}
}
출력:
firstArr before swapping : [2, 4]
secondArr before swapping : [6, 3]
firstArr after swapping : [6, 3]
secondArr after swapping : [2, 4]
Collections.swap()
을 사용하여 Java에서 배열의 두 요소 교체
Collections
클래스의swap()
메소드는 지정된 목록의 지정된 위치에서 요소를 교체합니다. Arrays.asList()
를 사용하여firstArr
을 목록으로 변환 한 다음0
과2
위치를 갖는swap()
메서드에 전달합니다. 인덱스 0의 단어를 인덱스 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));
}
}
출력:
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