Java Arraylist交换元素

Java Arraylist交换元素,java,arraylist,Java,Arraylist,如何交换数组列表的第一个和最后一个元素? 我知道如何交换数组的元素:设置一个临时值来存储第一个元素,让第一个元素等于最后一个元素,然后让最后一个元素等于存储的第一个元素 int a = values[0]; int n = values.length; values[0] = values[n-1]; values[n-1] = a; 那么对于ArrayList它会是这样的吗 String a = words.get(0); int n = words.size(); words.get(0)

如何交换
数组列表的第一个和最后一个元素?
我知道如何交换数组的元素:设置一个临时值来存储第一个元素,让第一个元素等于最后一个元素,然后让最后一个元素等于存储的第一个元素

int a = values[0];
int n = values.length;
values[0] = values[n-1];
values[n-1] = a;
那么对于
ArrayList
它会是这样的吗

String a = words.get(0);
int n = words.size();
words.get(0) = words.get(n-1);
words.get(n-1) = a

您可以使用Collections.swap(List,inti,intj)

像这样使用。下面是代码的在线编译。看一看

在指定列表中的指定位置交换元素。(如果指定的位置相等,则调用此方法会使列表保持不变。)

参数: 列表-要在其中交换元素的列表。 i-要交换的一个元素的索引。 j-要交换的其他元素的索引

阅读收集的官方文件


单行编译示例

在Java中,不能通过赋值在ArrayList中设置值,有一个
set()
方法可调用:

String a = words.get(0);
words.set(0, words.get(words.size() - 1));
words.set(words.size() - 1, a)
for(int i=0;ilist.get(i+1)){
int j=list.get(i);
列表。删除(i);
list.add(i,list.get(i));
列表。删除(i+1);
列表.添加(j);
i=-1;
}
}
}

这个问题实际上是“如何访问和更改
列表的元素”
?这个问题比标记为重复的问题更有针对性。我同意。改变数组列表是另一回事,交换两个节点是另一回事。“Collections.swap”是正确答案,但无法通过重复标记的答案访问此答案;“如何在java中更改ArrayList元素的值”。应该修改重复的问题,或者删除重复标记。有趣的是,两个问题都有不同的可接受答案,但它们仍然标记为重复。在重复问题中,询问如何更新值,而不是交换2个节点。这个问题确实需要一个调停者的注意。不幸的是,我的旗帜被无缘无故地谢绝了。有关的问题根本不是重复的。“Collections.swap”-Java自1.2以来的一部分-这就是这里的答案,在链接问题的页面上看不到。因为这是一个不同的问题!如果@Raedwald等人认为是这样,他们可以解释这到底是怎么回事?撤消重复状态!伙计!谢谢我正在寻找一种不使用内置排序的方式对ArrayList进行排序。我可能忽略了ArrayList的add(index,object)方法将object添加到索引中,并将已经存在于该位置的对象右移(如果有的话)。列表。移除(i+1)成功了!请小心,我最初使用了remove()然后add()方法,但得到了一些IndexOutOfBounds错误。set方法工作得更好,至少对我来说是这样。
words.set(0,words.set(n-1,words.get(0))@Evgeniy dorofev使用Collections.swap()而不是例如userList.remove(oldPosition)、userList.add(newPosition)和NotifyItemMoved(oldPosition、newPosition)是否有优势?
import java.util.*;
import java.lang.*;

class Main {
    public static void main(String[] args) throws java.lang.Exception       
    {    
        //create an ArrayList object
        ArrayList words = new ArrayList();

        //Add elements to Arraylist
        words.add("A");
        words.add("B");
        words.add("C");
        words.add("D");
        words.add("E");

        System.out.println("Before swaping, ArrayList contains : " + words);

        /*
      To swap elements of Java ArrayList use,
      static void swap(List list, int firstElement, int secondElement)
      method of Collections class. Where firstElement is the index of first
      element to be swapped and secondElement is the index of the second element
      to be swapped.

      If the specified positions are equal, list remains unchanged.

      Please note that, this method can throw IndexOutOfBoundsException if
      any of the index values is not in range.        */

        Collections.swap(words, 0, words.size() - 1);

        System.out.println("After swaping, ArrayList contains : " + words);    

    }
}
String a = words.get(0);
words.set(0, words.get(words.size() - 1));
words.set(words.size() - 1, a)
for (int i = 0; i < list.size(); i++) {
        if (i < list.size() - 1) {
            if (list.get(i) > list.get(i + 1)) {
                int j = list.get(i);
                list.remove(i);
                list.add(i, list.get(i));
                list.remove(i + 1);
                list.add(j);
                i = -1;
            }
        }
    }