Java 如何在不使用collections.swap方法的情况下交换数组列表中的两个元素

Java 如何在不使用collections.swap方法的情况下交换数组列表中的两个元素,java,Java,开发一种方法,用指定的有效索引I和j交换两个元素: public void swap(int I, int j); 这是我用来交换数组列表中两个元素的方法。 在调用swap(0,2)之后,原始列表是:[a==>b==>c==>d………]:[c==>b=>a==>d………] 这是输出应该打印出来的内容 ---------头等舱----- } -----二等舱----- 包it179.pa2; 导入java.util.*; 公共类MyArrayListTest{ 公共静态最终void main(字

开发一种方法,用指定的有效索引I和j交换两个元素:

public void swap(int I, int j);
这是我用来交换数组列表中两个元素的方法。 在调用swap(0,2)之后,原始列表是:[a==>b==>c==>d………]:[c==>b=>a==>d………] 这是输出应该打印出来的内容

---------头等舱-----

}

-----二等舱-----

包it179.pa2;
导入java.util.*;
公共类MyArrayListTest{
公共静态最终void main(字符串[]args){
MyArrayList my=新建MyArrayList();
ArrayList al=新的ArrayList();
新增(新MyArrayList(“A”));
新增(新MyArrayList(“B”);
新增(新MyArrayList(“C”);
新增(新MyArrayList(“D”);
新增(新MyArrayList(“E”);
新增(新MyArrayList(“F”);
System.out.print(“原始列表为:”);
对于(MyArrayList tmp:al){
系统输出打印(tmp);
}//结束
System.out.println(“调用swap(0,2)后):”;
系统输出打印(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);
}
公共静态无效交换(列表,int i,int j){
E=list.get(i);
list.set(i,list.get(j));
列表集(j,e);
}

看。要使用类实现这一点,逻辑是相同的,但方法签名将改为
public void swap(int i,int j)
对于列表中的swap元素,您可以
swap()
方法
java.util.Collections

Collections.swap(list, element1, element2)

您已经发布了需求和代码,但没有解释代码,也没有提出具体问题。请填空。假设swap方法被调用到测试类中,并对我实例化的数组列表和swap元素(0,2)使用swap方法。是否要解释出现了什么问题?第一个程序只是覆盖了toString方法,因此当程序输出时,它会显示第一个元素指向下一个元素,并显示“=>”。它还假设包含我必须调用到第二个程序中的swap方法。假设第二个程序有一个Arraylist,并使用第一个类中的swap方法覆盖其元素,并输出需要交换的内容,即(0,2)
swap
方法正在翻转参数的整数值,例如,如果调用
swap(1,3)
,则最初会有
i=1,j=3
,最后你会得到
i=3,j=1
。所有这些都没有触及
列表
,那么为什么您希望列表发生变化呢?当然,这比那更糟糕:1)你甚至不打电话给
swap
。2) 为什么
MyArrayList
有一个名为
list
的类型为
String
的字段?这不是名单。3) 所有这些都无法访问
al
,因此您希望如何更新实际列表?这基本上就是Collections.swap方法。我无法更改方法。公共无效交换(int I,int j);是我必须使用的方法,我不能使用任何其他方法。如果我能用你发布的方法,我会做得很好。
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);
}
Collections.swap(list, element1, element2)