Java 程序反转列表

javaobject oriented programmingprogramming更新于 2024/8/26 20:53:00

什么是反转列表?

反转列表是将元素位置交换或互换到特定列表中的操作。在用 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 来反转列表时,我们可能会遇到几个问题。但这里有一个解决方案,程序员可以通过它以聪明的方式面对这些问题。


相关文章