反向插入的Java数据结构

时间:2013-06-21 11:52:47

标签: java android arrays data-structures reverse

Java中是否有支持反向插入的数据结构?我想为数据结构添加值。我不知道提前多少。应将值插入以下行:

datastructure.insert(1); //datastructure is: {1}                 
datastructure.insert(4); //datastructure is: {4,1}       
datastructure.insert(9); //datastructure is: {9,4,1}

最后插入的值应始终是第一个。哪种数据结构最适合?

6 个答案:

答案 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中,这正是你想要的。