Java의 스왑 방법

K. Macharia 2023년10월12일
  1. swap메소드를 사용하여 Java 목록의 두 요소 교체
  2. Java 문자열에서 두 문자 교체
  3. Java에서 두 개체 교체
Java의 스왑 방법

swap()메소드는 Java에서 두 요소, 문자 또는 오브젝트의 위치를 교환하는 데 사용됩니다. 이 메서드는 목록, 문자열 또는 개체에 적용 할 수 있습니다. 이 기사에서는 다음에서swap()메소드 사용에 대해 설명합니다.

  1. 목록에서 두 요소 교환
  2. 문자열에서 두 문자 교체
  3. 두 개체 교환

swap메소드를 사용하여 Java 목록의 두 요소 교체

이것은 목록의 다른 요소에 영향을주지 않고 정의 된 위치에서 두 개의 특정 요소를 교환하는 데 사용되는 방법입니다. 지정된 인덱스 중 하나가 목록의 크기보다 크면 메서드는out of bound예외를 반환합니다. swap()은 인덱스의 요소가 스왑 된 목록의 출력을 제공합니다.

통사론:

public static void swap(List mylist, int m, int n)

이 메소드는 3 개의 매개 변수를 인수로 사용합니다.swap()메소드가 적용될 목록과 교환 될 두 개의 색인이 있습니다.

코드 예 :

import java.util.ArrayList;
import java.util.Collections;

public class PerformSwap {
  public static void main(String[] args) {
    ArrayList<String> lettersList = new ArrayList<String>();
    lettersList.add("a");
    lettersList.add("b");
    lettersList.add("c");
    lettersList.add("d");
    lettersList.add("e");
    lettersList.add("f");
    lettersList.add("g");
    System.out.println("Original List: " + lettersList);
    Collections.swap(lettersList, 0, 6);
    System.out.println("\nSwapped List: " + lettersList);
  }
}

출력:

Original List: [a, b, c, d, e, f, g]

Swapped List: [g, b, c, d, e, f, a]

위의 예에서는 색인 6의 문자g를 색인0의 문자a로 교환했습니다. swap메소드는 다른 목록 요소를 방해하지 않고이 두 문자 만 교환했습니다.

Java 문자열에서 두 문자 교체

문자열 값의 주요 속성 중 하나는 변경할 수 없다는 것을 의미합니다. 스왑 작업을 수행하려면 먼저String개체를StringBuilder또는 문자 배열에 복사해야합니다. 이 두 가지 데이터 유형을 사용하면 복사 된 객체에 대해 스왑 작업을 수행 할 수 있습니다. 아래에서는 문자 배열과StringBuilder를 사용하여 스왑 작업을 수행하여 스왑 된 문자로 새 문자열을 만듭니다.

Java에서 문자 배열을 사용하여 문자열 스왑 수행

스왑 메소드에는 세 개의 매개 변수가 있습니다. 스왑을 수행 할 문자열과 우리가 교환하는 문자의 두 인덱스입니다. 캐릭터 스왑을 수행하기 위해 먼저 임시 캐릭터 저장 객체 인tempo를 만듭니다. 이 임시 객체는 첫 번째 문자를 두 번째 문자로 교체 할 때 저장 한 다음이 문자를 두 번째 문자로 전달하여 교환 프로세스를 완료합니다.

다음과 같은 세 단계가 있습니다.

  • 문자열을 문자 배열 객체로 변환
  • 개체의 길이 가져 오기
  • char 배열의 인덱스 교체

코드 예 :

public class SwapString {
  static char[] swap(String mystring, int i, int j) {
    char ch[] = mystring.toCharArray();
    char tempo = ch[i];
    ch[i] = ch[j];
    ch[j] = tempo;
    return ch;
  }

  public static void main(String args[]) {
    String theS = "Favourite";

    System.out.println(swap(theS, 5, 2));
    System.out.println(swap(theS, 0, theS.length() - 1));
    System.out.println(theS);
  }
}

출력:

Farouvite
eavouritF
Favourite

Java에서 StringBuilder를 사용하여 문자열 스왑 수행

코드 예 :

public class SwapString {
  static String swap(String mystring, int i, int j) {
    StringBuilder mysb = new StringBuilder(mystring);
    mysb.setCharAt(i, mystring.charAt(j));
    mysb.setCharAt(j, mystring.charAt(i));
    return mysb.toString();
  }

  public static void main(String args[]) {
    String theS = "Favorite";

    System.out.println(swap(theS, 5, 2));
    System.out.println(swap(theS, 0, theS.length() - 1));

    // Original String
    System.out.println(theS);
  }
}

출력:

Faiorvte
eavoritF
Favorite

Java에서 두 개체 교체

swap방법을 사용하여 두 개체의 속성을 바꿀 수도 있습니다. 객체 스왑은 하나의 속성을 가진 객체와 둘 이상의 속성을 가진 객체에서도 수행 할 수 있습니다.

하나의 속성으로 개체 교체

침실 수 및 욕실 수와 같은 일부 속성이있는House라는 클래스가 있다고 가정합니다. House-house1house2의 두 개체를 만들어 보겠습니다. House에는value라는 하나의 속성 만 있습니다. 우리의 목표는house1house2의 데이터를 교환하는 것입니다.

코드 예 :

public class SwapObjects {
  public static void swap(House house1, House house2) {
    House temp = house1;
    house1 = house2;
    house2 = temp;
  }

  public static void main(String[] args) {
    House house1 = new House();
    House house2 = new House();

    house1.value = 5;
    house2.value = 2;

    // swap using objects
    swap(house1, house2);
    System.out.println(house1.value + ", " + house2.value);
  }
}
class House {
  public int value;
}

출력:

5, 2

Java에서 둘 이상의 속성으로 개체 교체

Wrapper클래스를 사용하여 여러 속성을 가진 두 개체의 속성을 교환합니다. 래퍼 클래스없이 스왑을 수행하면 함수 swap은 객체 참조의 복사본 만 만듭니다.

public class SwapObjects {
  public static void main(String[] args) {
    House house1 = new House(5, 3);
    House house2 = new House(2, 1);

    Wrapper whs1 = new Wrapper(house1);
    Wrapper whs2 = new Wrapper(house2);

    // swap using wrapper of objects
    swap(whs1, whs2);
    whs1.house.print();
    whs2.house.print();
  }

  public static void swap(Wrapper whs1, Wrapper whs2) {
    House temp = whs1.house;
    whs1.house = whs2.house;
    whs2.house = temp;
  }
}
class House {
  int bedroom, bathroom;

  // Constructor
  House(int bedroom, int bathroom) {
    this.bedroom = bedroom;
    this.bathroom = bathroom;
  }

  // Utility method to print object details
  void print() {
    System.out.println("bedrooms = " + bedroom + ", bathrooms = " + bathroom);
  }
}
class Wrapper {
  House house;
  Wrapper(House house) {
    this.house = house;
  }
}

출력:

bedrooms = 2, bathrooms = 1
bedrooms = 5, bathrooms = 3

래퍼 클래스는 멤버의 클래스가 사용자 클래스에 대한 액세스 권한을 부여하지 않더라도 객체를 교환합니다. swap()메소드를 객체에 적용하는 동안 객체의 속성 수에 따라 사용할 접근 방식을 선택할 수 있습니다.

관련 문장 - Java String