反向遍历数组列表的 Java 程序
数组列表是集合框架的一部分,存在于 java.util 包中。它为我们提供了 Java 中的动态数组,就像 C++中的 Vector 一样。尽管它可能比标准数组慢,但在需要对数组进行大量操作的程序中会很有帮助。任务是在数组列表中插入一个元素,然后反转它,或者说反转方向。
例:
Input :1, 2, 3, 4, 5, 6
Output : 6, 5, 4, 3, 2, 1
Input : 10, 22, 34, 3, 2, 6
Output : 6, 2, 3, 34, 22, 10
Input : 11, 22, 34, 42, 51 , 63
Output : 63, 51, 42, 34, 22, 11
有几种方法可以让我们以下面列出的相反方向迭代和打印列表。
方法 1:(使用列表迭代器)
1。声明数组列表
// size of n
ArrayList<Integer> List = new ArrayList<Integer>(n);
2。通过使用 add 函数,我们将元素推入数组列表。
3。使用迭代器到达数组列表遍历的最后一个元素后。hasPrevious()方法返回 true 如果一个元素出现在当前元素的后面,遍历直到 hasPrevious()返回 false。
4。遍历时打印数组列表的当前元素。
Java
// Traverse through ArrayList in
// reverse direction using List
// Iterator in Java
import java.util.ListIterator;
import java.io.*;
import java.util.ArrayList;
class GFG {
public static void main(String[] args)
{
// create an instance of arraylist
ArrayList<Integer> List = new ArrayList<Integer>();
// add elements
List.add(10);
List.add(9);
List.add(8);
List.add(7);
List.add(6);
// create a listiterator on list
ListIterator<Integer> List_Iterator
= List.listIterator(List.size());
System.out.println("Reversed : ");
// print ArrayList in reverse direction using
// listiterator
while (List_Iterator.hasPrevious()) {
System.out.println(List_Iterator.previous());
}
}
}
输出
Reversed :
6
7
8
9
10
方法 2:(使用流)
流应用编程接口用于处理对象集合。流是支持各种方法的对象序列,这些方法可以通过流水线来产生所需的结果。
- Use List.stream () to get the stream.
- Use stream.collect () to collect the elements of this stream into link list .
- Use the LinkedList.descendingIterator () method to iterate the linked list in the reverse order.
- Use forEachRemaining () to print each element of the array list. We can provide the method reference system.out:: println iterator to forEachRemaining ().
爪哇
// Traverse through ArrayList in
// reverse direction Using
// stream in Java
import java.lang.*;
import java.util.stream.*;
import java.util.*;
import java.io.*;
class GFG {
public static void main(String[] args)
{
// create a list
List<Integer> Arlist = Arrays.asList(5, 2, 4, 8);
System.out.println("Reversed : ");
// create a stream
// collect the elements after these operations
// create a descending iterator on the stream
// loop through the descending iterator
// print the element
Arlist.stream()
.collect(
Collectors.toCollection(LinkedList::new))
.descendingIterator()
.forEachRemaining(System.out::println);
}
}
输出
Reversed :
8
4
2
5
方法三:(使用 For 循环)我们知道列表是一个有序集合,我们只需要通过它的索引就可以访问列表的元素,所以定义一个 ArrayList,从最后使用一个 for 循环迭代到第一个元素,打印每个元素。
Java
// Traverse through ArrayList in
// reverse direction using For
// Loop in Java
import java.util.*;
import java.io.*;
class GFG {
public static void main(String[] args)
{
// create a list
List<Integer> Arlist = Arrays.asList(5, 4, 8, 2);
System.out.println("Reversed :");
// Printing in reverse
for (int i = Arlist.size() - 1; i >= 0; i--) {
System.out.println(Arlist.get(i));
}
}
}
输出
Reversed :
2
8
4
5
方法 4:(使用 Apache Common 的 reverselistitator)
这个方法提供了 ReverseListIterator,我们可以用它以相反的顺序迭代 List。当我们使用 ReverseListIterator 时,next()将返回数组列表中的最后一个元素,当我们调用下一个元素时,下一个括号将返回当前元素的前一个元素,而 has next 将检查我们的数组列表是否包含元素。
爪哇
T0T6】
输出
Reversed :
7
8
5
1
时间复杂度: O(n)
版权属于:月萌API www.moonapi.com,转载请注明出处