[英]How to randomize ArrayList without using Collections.swap()?
[英]How two swap two elements in a array list without using collections.swap method
開發一種方法來交換具有指定有效索引 I 和 j 的兩個元素:
public void swap(int I, int j);
這是我必須用來交換數組列表中的兩個元素的方法。 原列表為: [a ==> b ==> c ==> d........] 調用swap(0, 2)后: [c ==> b ==> a ==> d........]這是應該為輸出打印的內容。
--------- 頭等艙-----
package it179.pa2;
import java.util.*;
public class MyArrayList {
private String list;
MyArrayList(String list) {
this.list = list;
}
MyArrayList() {
}
public void swap(int i, int j) {
int temp1;
temp1 = i;
i = j;
j = temp1;
}
@Override
public String toString() {
return list + "==>";
}
}
----- 二等艙-----
package it179.pa2;
import java.util.*;
public class MyArrayListTest {
public static final void main (String[]args) {
MyArrayList my = new MyArrayList();
ArrayList<MyArrayList> al = new ArrayList<MyArrayList>();
al.add(new MyArrayList("A"));
al.add(new MyArrayList("B"));
al.add(new MyArrayList("C"));
al.add(new MyArrayList("D"));
al.add(new MyArrayList("E"));
al.add(new MyArrayList("F"));
System.out.print("The original list is: ");
for (MyArrayList tmp: al) {
System.out.print(tmp);
}// end of for
System.out.println("After calling swap(0,2): ");
System.out.print(al);
}
}
這是一個靜態方法:
public static <E> void swap(List<E> list, int i, int j) {
E e = list.get(i);
list.set(i, list.get(j));
list.set(j, e);
}
看到這個問題。 要使用類來做到這一點,邏輯將是相同的,但方法簽名將改為public void swap(int i, int j)
。
對於 List 中的交換元素,您可以使用java.util.Collections
swap()
方法
Collections.swap(list, element1, element2)
我們可以使用 set() 方法交換 ArrayList 元素。collections 也提供了交換 collections.swap() 的方法但是在這個例子中,我們將編寫自己的方法來替換 ArrayList 中的元素。
public static swapList(List<String> arr , int i , int j){
//assign element from position i to temporary variable
String element = arr.get(i);
//replace element on position i from position j
arr.set(i, arr.get(j));
//replace element on postion j from temporary variable
arr.set(j, element);
}
我們也可以使用 collections.swap() 方法來達到同樣的目的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.