Java 程序反转列表
什么是反转列表?
反转列表是将元素位置交换或互换到特定列表中的操作。在用 Java 编写代码时,您可以轻松地反转某个流程的顺序。这是计算机科学中任何编程语言的常规方法。reverse () 方法是将第一个元素的位置反转到最后一个元素的类的集合。在进程终止后,最后一个元素将获得第一个位置。
列表是一个接口,其中类方法表示为没有定义的签名。将从中实现类,通过该方法获得特定定义。今天在本文中,我们将学习如何使用 Java 条件和不同方法反转列表。
如何使用 Java 反转列表?
在此方法中,我们必须提到一个指针,通过更改节点对链接列表执行反转过程。
Java 中的 ArrayList 反转可以通过类反转方法(又名 Collections.reverse())使用。在此方法中,数组列表将在线性时间内完成,时间复杂度为 O(n)。此方法接受 List 类型参数来执行程序。
有时当您使用 Java 编写代码时,需要从最后一个元素开始操作来反转数组。通过改变第一个和最后一个元素的位置,需要确保该过程将一直运行,直到中间元素交换其位置。
以反向方式打印数组,程序员需要使用 for 循环从该特定数据集(又称数组)的末尾启动打印操作。这是反转列表的常规方法。
Java 中有许多接口可用于反转列表,但就地反转是节省机器内存的更好选择。
反转列表的算法
以下是使用 Java 反转链接列表的一般算法 -
步骤 1 - 创建一个新的数组列表。
步骤 2 - 使用 add(E e) API 将一些数据作为输入。
步骤 3 - 反转列表中的那些元素并使用调用 reverse(List list) API。
语法
import java.util.Collections; (Java 包) Collections.reverse(class_obj);
类 collection 的 Reverse() 方法建议反转可以排序的元素。
有几种使用 Java 反转列表的方法 -
方法 1- 反转数组打印 Collections.reverse() 方法
方法 2 - 使用 for 循环反转数组
方法 3 - 就地方法反转数组
方法 4 - 通过 Java 8 流 API
方法 5 - 通过 ListIterator
使用 Collections.reverse() 方法反转数组
Collections.reverse() 方法是最使用 Java 反转列表的可接受方法。反转方法遵循语法:public static void reverse(List<?> list),以执行代码。
示例
public class reverseclassArray { static void reverse(int a[], int n){ int[] b = new int[n]; int j = n; for (int i = 0; i < n; i++) { b[j - 1] = a[i]; j = j - 1; } System.out.println("Here the reversed array is:"); for (int k = 0; k < n; k++) { System.out.println(b[k]); } } public static void main(String[] args){ int [] arr12 = {101, 202, 303, 404, 505}; reverse (arr12, arr12.length); } }
输出
这里反转的数组是: 505 404 303 202 101
使用 for 循环反转数组
我们可以使用 for 循环来反转数组。在此方法中,将新数组与现有数组一起注入,这样它将以反向方式进行。
示例
public class Main { static void reverse_array(char char_array[], int a) { char[] dest_array = new char[a]; int j = a; for (int i = 0; i < a; i++) { dest_array[j - 1] = char_array[i]; j = j - 1; } System.out.println("此操作后的反转数组为: "); for (int r = 0; r < a; r++){ System.out.print(dest_array[r] + " "); } } public static void main(String[] args){ char [] char_array = {'I','N','D','I','A'}; System.out.println("操作后原始数组打印: "); for (int s = 0; s <char_array.length; s++) { System.out.print(char_array[s] + " "); } System.out.println(); reverse_array(char_array, char_array.length); } }
输出
操作后打印的原始数组: I N D I A 此操作后的反转数组为: A I D N I
就地反转数组的方法
无需使用其他单独类型的数组即可完成此操作。方法后面可以交换数组的第一个和最后一个数据。
示例
public class reverseArray { static void reverse(int a[], int n){ int[] b = new int[n]; int j = n; for (int i = 0; i < n; i++) { b[j - 1] = a[i]; j = j - 1; } System.out.println("Reversed array is after the operation:"); for (int l = 0; l < n; l++) { System.out.println(b[l]); } } public static void main(String[] args){ int [] arr = {1000, 2000, 3000, 4000, 5000}; reverse(arr, arr.length); } }
输出
操作后反转后的数组为: 5000 4000 3000 2000 1000
使用 Java 8 Stream API
使用 stream API,创建一个表示列表索引的 int 流。
示例
import java.util.*; import java.util.stream.Collectors; import java.util.stream.IntStream; public class FavFashion{ public static void main(String[] args) { List<String> clothesfavv = new ArrayList<>(); clothesfavv.add("Raymond Shirt"); clothesfavv.add("Impact Pants"); clothesfavv.add("Socks of Champion"); clothesfavv.add("Shoes By Bata"); System.out.println("在反转整个数据之前:"); System.out.println(clothesfavv); List reverseClothesfavv = IntStream.range(0, clothesfavv.size()).map(i -> clothesfavv.size() - 1-i).mapToObj(clothesfavv::get).collect(Collectors.toList()); System.out.println("将整个数据反转后:"); System.out.println(reverseClothesfavv); } }
输出
在反转整个数据之前: [Raymond Shirt, Impact Pants, Socks of Champion, Shoes By Bata] 将整个数据反转后: [Shoes By Bata, Socks of Champion, Impact Pants, Raymond Shirt]
通过 List Iterator
Java 环境有一个迭代器类,可用于迭代不同的数据集合。
示例
import java.util.*; public class FashionCollector{ public static void main(String[] args) { List<String> clothesstore2023 = new ArrayList<>(); clothesstore2023.add("T-shirt Of Raymond"); clothesstore2023.add("Pants By Impact"); clothesstore2023.add("Socks Of Champion"); clothesstore2023.add("Shoes Of Bata"); List<String> reverseclothesstore2023 = new ArrayList<>(); ListIterator<String> listIterator = clothesstore2023.listIterator(clothesstore2023.size()); while(listIterator.hasPrevious()){ String elemenString = listIterator.previous(); reverseclothesstore2023.add(elemenString); } System.out.println("反转存储数据之前:"); System.out.println(clothesstore2023); System.out.println("反转存储数据后:"); System.out.println(reverseclothesstore2023); } }
输出
反转存储数据之前: [T-shirt Of Raymond, Pants By Impact, Socks Of Champion, Shoes Of Bata] 反转存储数据后: [Shoes Of Bata, Socks Of Champion, Pants By Impact, T-shirt Of Raymond]
结论
因此,从上面的讨论中,我们发现了如何使用 Java 来反转列表。在实施了各种编码方法之后。建议仔细了解这些方法。
当我们尝试使用 Java 来反转列表时,我们可能会遇到几个问题。但这里有一个解决方案,程序员可以通过它以聪明的方式面对这些问题。