这不是我在现实生活中会做的事情,而是说:
LinkedList = a,b,c,d,e 我得到了相应的索引.
说,我想删除b (index=1) and d (index=3)(即周围的值c (index=j=2))
现在,我做(工作正常):
When j=2
LS.remove(j + 1); ----> j=3 (d removed)
LS.remove(j - 1); ----> j=1 (b removed)
Run Code Online (Sandbox Code Playgroud)
并被b and d删除.
但如果,我做(不起作用):
When j=2
LS.remove(j - 1); ----> j=1 (b removed)
LS.remove(j); ----> j=2 (d is not removed) (used j because due to above removal, LL has adjusted it self)
Run Code Online (Sandbox Code Playgroud)
即,当我首先移动'c'之前的值时,'d'不会被移除并且LL保持不变.我猜,我也在做同样的事情.
我错过了什么吗?
更新:
所以,当我改变签名时public void operation(String operator, Integer j) to public void operation(String operator, int j),它起作用了.
如果j是big类型Integer,那么LinkedList.remove(Object)将调用而不是LinkedList.remove(int).这不是你真正想要的.
我没有看到任何理由使用big-Integer作为j第二个例子中的类型,你应该使用原语int.
请检查为什么Java Collections不删除通用方法?为什么LinkedList还有remove(Object)签名.