我一直想弄清楚如何交换arraylist中的项目;所以首先我用这段代码创建了一个arraylist:
import java.util.List;
public class swap {
//precondition: x and y are >= 0 and < mylist.size()
//precondition: mylist is not null
void swap(int x, int y, List <String> myList) {
String s = myList.get(x);
myList.add(x, myList.get(y));
myList.add(y, s);
System.out.println(myList);
} }
这将在控制台上返回[A,B,C,D,E] 然后我打开了另一个类并使用了我在网上找到的代码,并试图进行修改以使其工作,但它一直没有用。
{{1}}
如果我尝试将x和y替换为列表中元素的位置编号,那么这只会导致一系列新问题。你可以说,我是初学者,任何帮助都会受到赞赏。
答案 0 :(得分:1)
看一下ArrayList API,特别是set()方法。 http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#set(int,%20E)
public E set(int index, E element)
&#34;用指定的元素替换此列表中指定位置的元素。&#34;
给该方法一个镜头而不是add(),可能如下:
基本上,每当您遇到困难时,浏览API以查看是否有任何其他方法可能会使任务变得更容易,这会让您感到痛苦。我们都不会完全了解API,回到那个文档对每个人来说都是常见的事情。好吧,几乎所有人。
答案 1 :(得分:1)
您的代码的作用是:
因此,如果您有一个内容为["A", "B", "C", "D", "E"]
的列表,并且您调用了swap(1, 3, list)
,那么请按照伪代码进行操作:
s
变为“B”["A", **"D"**, "B", "C", "D", "E"]
["A", "D", "B", **"B"**, "C", "D", "E"]
您要做的是将x
和y
的值换成设置,而不是添加它们:
void swap(int x, int y, List <String> myList) {
String s = myList.get(x);
myList.set(x, myList.get(y));
myList.set(y, s);
System.out.println(myList);
}
这实际上会将索引x
和y
上的值互相替换
答案 2 :(得分:0)
您需要使用set而不是add。
如果使用set,它将用新元素替换该位置的元素。
// arrayList.set(index i,String replaceElement);
所以你的交换函数应该是这样的:
public class swap {
void swap(int x, int y, List <String> myList) {
String s = myList.get(x);
myList.set(x, myList.get(y));
myList.set(y, s);
System.out.println(myList);
} }
答案 3 :(得分:0)
Collections.swap(List,int,int)JDK 1.4+方法就是这样做的。这是一个示例:
Collections.swap(myList, 0, 1)