📜  如何在Java中交换 ArrayList 中的两个元素?(1)

📅  最后修改于: 2023-12-03 15:08:54.607000             🧑  作者: Mango

如何在Java中交换 ArrayList 中的两个元素?

ArrayList是Java中最常用的集合之一,它提供了访问列表中单个元素的方法。在操作ArrayList时,有时需要将其中的两个元素互换位置。本文介绍了在Java中交换ArrayList中两个元素的几种方法。

方法一:使用Collections.swap()方法交换元素

Collections类提供了一个swap()方法,可以在指定的List中交换两个元素的位置。这个方法需要三个参数:List对象,要交换的第一个位置和要交换的第二个位置。具体示例代码如下:

import java.util.ArrayList;
import java.util.Collections;

public class SwapArrayListElementsDemo {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("A");
        list.add("B");
        list.add("C");
        list.add("D");
        System.out.println("Before swap: " + list);
        Collections.swap(list, 1, 2);
        System.out.println("After swap: " + list);
    }
}

输出结果为:

Before swap: [A, B, C, D]
After swap: [A, C, B, D]
方法二:使用自定义函数交换元素

有时候我们可能想要自己定义一个交换函数,来实现交换ArrayList中两个元素的位置。具体示例代码如下:

import java.util.ArrayList;

public class SwapArrayListElementsDemo {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("A");
        list.add("B");
        list.add("C");
        list.add("D");
        System.out.println("Before swap: " + list);
        swap(list, 1, 2);
        System.out.println("After swap: " + list);
    }

    public static void swap(ArrayList<String> list, int i, int j) {
        String temp = list.get(i);
        list.set(i, list.get(j));
        list.set(j, temp);
    }
}

输出结果为:

Before swap: [A, B, C, D]
After swap: [A, C, B, D]
方法三:使用Java8中的新特性交换元素

如果您使用的是Java8或更高版本,可以使用Java8中的新特性来交换ArrayList中的元素。具体示例代码如下:

import java.util.ArrayList;
import java.util.Collections;
import java.util.stream.IntStream;

public class SwapArrayListElementsDemo {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("A");
        list.add("B");
        list.add("C");
        list.add("D");
        System.out.println("Before swap: " + list);
        Collections.swap(list, 1, 2);
        System.out.println("After swap: " + list);
        IntStream.range(0, list.size())
                .filter(i -> i != 1 && i != 2)
                .forEach(i -> Collections.swap(list, i, i));
        System.out.println("After second swap: " + list);
    }
}

输出结果为:

Before swap: [A, B, C, D]
After swap: [A, C, B, D]
After second swap: [A, C, B, D]

以上就是在Java中交换ArrayList中两个元素的几种方法。