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)

該方法使用三個引數作為引數-將應用 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 或字元陣列中。這兩種資料型別允許我們對複製的物件進行交換操作。下面,我們將使用 char 陣列和 StringBuilder 執行交換操作,以建立一個新的字串和交換字元。

在 Java 中使用 char 陣列執行字串互換操作

swap 方法有三個引數-我們要執行交換的字串和我們要交換的字元的兩個索引。為了執行字元交換,我們首先建立一個臨時字元儲存物件-tempo。這個臨時物件在我們將第一個字元替換為第二個字元時,將其儲存起來,然後將這個字元傳遞給第二個字元,完成交換過程。

其中涉及三個步驟:

  • 將 String 轉換為 char 陣列物件; 2.
  • 獲取物件的長度
  • 交換 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 的物件-house1house2House 只有一個屬性-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