我在Java中有一堆Integer,我想知道是否还有其他方法可以将"最后推送的项目"增加一个而不首先将其加入.
我目前的解决方案是
Stack<Integer> stack = new Stack<Integer>();
stack.push(1);
stack.push(2); // Increment 2 to 3
Integer last = stack.pop();
stack.push(last+1);
Run Code Online (Sandbox Code Playgroud)
我尝试了以下但没有工作
Integer last = stack.peek();
last+=1;
Run Code Online (Sandbox Code Playgroud)
我认为它会起作用,因为last是对堆栈中最后一个元素的引用,它会增加.
在Java中,Integer类是不可变的,这意味着Integer永远不能修改对象.这个:
last += 1;
Run Code Online (Sandbox Code Playgroud)
这真的只是简写:
last = Integer.valueOf(last.intValue() + 1);
Run Code Online (Sandbox Code Playgroud)
也就是说,它实际上创建(或检索)一个不同的 Integer实例,其值大于前一个Integer实例的值.
如果您希望能够修改堆栈顶部的对象,则需要在堆栈中放置可变对象.你可以创建自己的IntWrapper或者IntHolder或MutableInteger类为该.(但我不特别推荐这个.)
| 归档时间: |
|
| 查看次数: |
3004 次 |
| 最近记录: |