Java 中的交換方法
swap()
方法用於交換 Java 中兩個元素、字元或物件的位置。這個方法可以應用於一個列表、一個字串或一個物件。在本文中,我們將討論 swap()
方法在的使用。
- 交換列表中的兩個元素
- 交換字串中的兩個字元
- 交換兩個物件
使用 swap
方法交換 Java 列表中的兩個元素
該方法用於在不影響列表中其他元素的情況下,交換定義位置上的兩個特定元素。如果指定的索引之一高於列表的大小,那麼該方法將返回一個 out of bound
異常。swap()
將給出一個包含交換的索引中元素的列表輸出。
語法
public static void swap(List mylist, int m, int n)
該方法使用三個引數作為引數-將應用 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
或字元陣列中。這兩種資料型別允許我們對複製的物件進行交換操作。下面,我們將使用 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
的物件-house1
和 house2
。House
只有一個屬性-value
。我們的目標是交換 house1
和 house2
的資料。
程式碼示例:
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()
方法時,可以根據物件中的屬性數量來選擇使用的方法。