Java中是否有支持反向插入的数据结构?我想为数据结构添加值。我不知道提前多少。应将值插入以下行:
datastructure.insert(1); //datastructure is: {1}
datastructure.insert(4); //datastructure is: {4,1}
datastructure.insert(9); //datastructure is: {9,4,1}
最后插入的值应始终是第一个。哪种数据结构最适合?
答案 0 :(得分:5)
这称为堆栈。请参阅Stack<E>
,方法为push()
和pop()
答案 1 :(得分:5)
最好的方法是使用Deque除非你有一个非常旧的Java版本,否则你不应该使用堆栈。 Stack btw将是您需要的相反顺序。
Stack stack = new Stack();
stack.push(1);
stack.push(4);
stack.push(9);
System.out.println("stack: " + stack);
Deque<Integer> deque = new ArrayDeque<>();
deque.addFirst(1);
deque.addFirst(4);
deque.addFirst(9);
System.out.println("deque: " + deque);
打印
stack: [1, 4, 9]
deque: [9, 4, 1]
答案 2 :(得分:1)
您可以使用 java.util.ArrayDeque 代替 Stack 。来自Oracle Java API:
Deque接口及其实现提供了一套更完整,更一致的LIFO堆栈操作,应该优先使用 Stack 类。例如:
Deque<Integer> stack = new ArrayDeque<Integer>();
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
您将获得类似{4,3,2,1}的值。
class java.util.ArrayDeque 提供LIFO数据结构的所有操作(对于ex push()和pop())
答案 3 :(得分:0)
我们在StackOverflow上,你可能想要使用Stack;)http://docs.oracle.com/javase/6/docs/api/java/util/Stack.html
答案 4 :(得分:0)
您可以使用LinkedList并使用addFirst()
或Stack
答案 5 :(得分:0)
是的,你可以做的最简单的事情是实现一个堆栈,逐个推送你所有的元素,然后将它们弹出。它跟在Last In first Out中,这正是你想要的。