Java의 스왑 방법

  1. swap메소드를 사용하여 Java 목록의 두 요소 교체
  2. Java 문자열에서 두 문자 교체
  3. 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.Collections;
import java.util.ArrayList;

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

  • Java에서 문자열을 InputStream으로 변환
  • Java에서 문자열이 정수인지 확인하는 방법