如何在 Java 中创建交换函数

原文:https://www.studytonight.com/java-examples/how-to-create-a-swap-function-in-java

在本文中,我将向您介绍一些交换原始类型和非原始类型数据类型的示例。相比之下,在原始数据类型上,我们可以很容易地执行交换,但是在非原始数据类型的情况下,这是非常复杂的工作。java.util.Collections类支持swap(),用于交换原始类型和非原始类型数据类型列表中的元素。

在继续使用swap()方法之前,让我们看看两个变量交换的经典例子。

交换两个变量的示例

这是交换两个变量的常规方式。假设我们有两个变量ab ,那么a 的值将被赋给b,类似地b 的值被赋给a的值。一个变量一次只能保存一个值,这就是为什么我们创建temp 变量来保存临时值。从输出值可以观察到两个变量都在变化。

public class StudyTonight 
{ 
    public static void main(String[] args)   
    { 
        int a=10;
        int b=20;
        int temp;
        System.out.println("Before Swap: a="+a+" b:"+b);
        temp=a;
        a=b;
        b=temp;
        System.out.println("After Swap: a="+a+" b:"+b);
    } 
}

互换前:a=10 b:20 互换后:a=20 b:10

我们可以看到上面的代码可以很好地交换两个变量,但是需要额外的内存。为了节省内存,我们可以使用交换公式:

a=a+b;

b=a-b;

a=a-b;

当我们想要处理两个元素时,这些方法是很好的。如果有必要在对象列表中进行交换,该怎么办?

在这种情况下Collections.swap()功能非常有帮助:

public static void swap(List<?> list, int indexOne, int indexTwo)

list:是我们要进行交换的列表

indexOne, indexTwo:这些是列表中的索引,将通过函数进行交换

enlightened如果任何一个索引越过了列表的边界,这个方法会抛出一个异常IndexOutOfBoundException

使用 swap()函数交换列表中元素的示例

在下面的例子中,我们制作了一个 String 的 ArrayList,然后在第 0 个和第 2 个元素上使用Collections,swap()方法执行了一个交换操作。通过比较交换前后的列表,可以很容易地注意到元素的交换。

交换前:[ 班加罗尔、德里、诺伊达、孟买]

交换后:[ 诺伊达,德里,班加罗尔,孟买]

import java.util.*;  
public class StudyTonight 
{ 
    public static void main(String[] args)   
    { 
        ArrayList<String>  list = new ArrayList<String>();  
        list.add("Bangalore");  
        list.add("Delhi");  
        list.add("Noida");  
        list.add("Mumbai");   
        System.out.println("List Before Swapping : " +list);   
        Collections.swap(list, 0, 2);  
        System.out.println("List after swapping : " +list);  
    } 
}

交换前列表:【班加罗尔、德里、诺伊达、孟买】 交换后列表:【诺伊达、德里、班加罗尔、孟买】

结论:

要交换基本元素,我们可以简单地使用一个临时变量并交换值。但是在对象列表的情况下,我们最终可能会使用大量的额外空间。在这些情况下,使用 Collections.swap()方法交换列表中的元素是非常有益的。我们可以想做多少次就做多少次。我们只需要照顾IndexOutOfBoundException。当我们处理大型对象列表以节省创建临时对象的额外开销时,这种方法非常有用。