如何在 Java 中反转堆栈和队列的顺序
How to reverse order Stack and Queue in Java
我想在 Java 中使用堆栈和队列反转输出顺序。
这是我的代码:
import java.util.*;
public class Books {
public static void main(String[] args) {
Queue<String> book = new LinkedList<String>();
Stack<String> Title = new Stack<>();
Scanner user = new Scanner(System.in);
System.out.println("Enter four book titles.");
int b = 4;
for (int i = 1; i <= b; i++) {
System.out.print("Book " + i + ": ");
String Enter = user.nextLine();
book.offer(Enter);
}
System.out.println("New order of books:");
System.out.println(book);
}
}
这是这段代码的输出。
Enter four book titles.
Book 1: wew1
Book 2: wew2
Book 3: wew3
Book 4: wew4
New order of books:
[wew1, wew2, wew3, wew4]
我想做的是按相反的顺序进行。但是我不知道怎么办。
您可以尝试在 Queue
中添加书籍并将它们添加到 Stack
然后使用 pop()
操作打印。
如果您想使用 Stack
,建议使用 ArrayDeque
实现
public static void main(String[] args) {
Queue<String> queue = new LinkedList<>();
Scanner user = new Scanner(System.in);
System.out.println("Enter four book titles.");
int b = 4;
for (int i = 1; i <= b; i++) {
System.out.print("Book " + i + ": ");
String Enter = user.nextLine();
queue.add(Enter);
}
ArrayDeque<String> stack = new ArrayDeque<>();
while (!queue.isEmpty()) {
stack.push(queue.poll());
}
System.out.println("New order of books:");
while (!stack.isEmpty()) {
System.out.print(stack.pop()+" ");
}
user.close();
}
、output
Enter four book titles.
Book 1: wew1
Book 2: wew2
Book 3: wew3
Book 4: wew4
New order of books:
wew4 wew3 wew2 wew1
利用LinkedList
implements Deque
(double-ended queue). Note that Deque
also implements Queue
(单端队列)的优势。
您可以使用方法Deque#offerFirst(E e)
将书插入队列的开头。之后不需要反转这样的队列。最小示例:
Deque<String> queue = new LinkedList<>();
for (int i = 1; i <= 4; i++){
queue.offerFirst("book" + i);
}
System.out.println("Reversed order of books:");
System.out.println(queue);
Output:
Reversed order of books:
[book4, book3, book2, book1]
注1:只要不需要通过索引访问就可以考虑使用ArrayDeque
instad of LinkedList
注2:不要用Stack
只要是考虑obsolete and deprecated.
我想在 Java 中使用堆栈和队列反转输出顺序。
这是我的代码:
import java.util.*;
public class Books {
public static void main(String[] args) {
Queue<String> book = new LinkedList<String>();
Stack<String> Title = new Stack<>();
Scanner user = new Scanner(System.in);
System.out.println("Enter four book titles.");
int b = 4;
for (int i = 1; i <= b; i++) {
System.out.print("Book " + i + ": ");
String Enter = user.nextLine();
book.offer(Enter);
}
System.out.println("New order of books:");
System.out.println(book);
}
}
这是这段代码的输出。
Enter four book titles.
Book 1: wew1
Book 2: wew2
Book 3: wew3
Book 4: wew4
New order of books:
[wew1, wew2, wew3, wew4]
我想做的是按相反的顺序进行。但是我不知道怎么办。
您可以尝试在 Queue
中添加书籍并将它们添加到 Stack
然后使用 pop()
操作打印。
如果您想使用 Stack
ArrayDeque
实现
public static void main(String[] args) {
Queue<String> queue = new LinkedList<>();
Scanner user = new Scanner(System.in);
System.out.println("Enter four book titles.");
int b = 4;
for (int i = 1; i <= b; i++) {
System.out.print("Book " + i + ": ");
String Enter = user.nextLine();
queue.add(Enter);
}
ArrayDeque<String> stack = new ArrayDeque<>();
while (!queue.isEmpty()) {
stack.push(queue.poll());
}
System.out.println("New order of books:");
while (!stack.isEmpty()) {
System.out.print(stack.pop()+" ");
}
user.close();
}
、output
Enter four book titles.
Book 1: wew1
Book 2: wew2
Book 3: wew3
Book 4: wew4
New order of books:
wew4 wew3 wew2 wew1
利用LinkedList
implements Deque
(double-ended queue). Note that Deque
also implements Queue
(单端队列)的优势。
您可以使用方法Deque#offerFirst(E e)
将书插入队列的开头。之后不需要反转这样的队列。最小示例:
Deque<String> queue = new LinkedList<>();
for (int i = 1; i <= 4; i++){
queue.offerFirst("book" + i);
}
System.out.println("Reversed order of books:");
System.out.println(queue);
Output:
Reversed order of books: [book4, book3, book2, book1]
注1:只要不需要通过索引访问就可以考虑使用ArrayDeque
instad of LinkedList
注2:不要用Stack
只要是考虑obsolete and deprecated.