簡體   English   中英

兩個如何在不使用 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() 方法來達到同樣的目的。

參考: 交換 Java ArrayList 的元素

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM