Java에서 배열 교체

Rupam Yadav 2023년10월12일
  1. 숫자 연산자를 사용하여 Java에서 두 배열 교체
  2. 비트 연산자를 사용하여 Java에서 두 배열 교환
  3. Collections.swap()을 사용하여 Java에서 배열의 두 요소 교체
Java에서 배열 교체

이 기사에서는 Java에서 두 배열을 교체하는 다양한 접근 방식을 살펴 보겠습니다. 세 번째 변수를 사용하여 두 배열을 교체하는 대신 산술 및 비트 연산자를 사용할 수 있습니다.

숫자 연산자를 사용하여 Java에서 두 배열 교체

아래의 코드에는int 유형 값을 보유하는ab 두 개의 배열이 있습니다. 두 배열의 길이는 동일합니다.

산술 연산자를 사용하여ab를 교체합니다. 첫 번째 반복에서 우리는 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을 목록으로 변환 한 다음02 위치를 갖는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 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

관련 문장 - Java Array