如何在 Java 中创建交换函数
原文:https://www.studytonight.com/java-examples/how-to-create-a-swap-function-in-java
在本文中,我将向您介绍一些交换原始类型和非原始类型数据类型的示例。相比之下,在原始数据类型上,我们可以很容易地执行交换,但是在非原始数据类型的情况下,这是非常复杂的工作。java.util.Collections
类支持swap()
,用于交换原始类型和非原始类型数据类型列表中的元素。
在继续使用swap()
方法之前,让我们看看两个变量交换的经典例子。
交换两个变量的示例
这是交换两个变量的常规方式。假设我们有两个变量a
和b
,那么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
:这些是列表中的索引,将通过函数进行交换
如果任何一个索引越过了列表的边界,这个方法会抛出一个异常
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
。当我们处理大型对象列表以节省创建临时对象的额外开销时,这种方法非常有用。