2011-10-28 63 views
0

我希望能够减少ArrayList中的值以模拟从堆中移除的对象。不过,我不能用ArrayList(字符串)来做到这一点操作ArrayList中的值Java

下面的例子是我所尝试的。

ItemArray.get(pressedItem + 1) = (ItemArray.get(pressedItem + 1)) - 1 

有没有办法让ArrayList中的值变成更可操作的状态?

编辑:

只是要指出,我的ArrayList是的ArrayList(String)在此刻

+0

你遇到了什么错误 ? – r15habh

回答

3

您需要使用List#set()变异列表。

List<Integer> items = new ArrayList<Integer>(); 
// later... 
int position = pressedItem + 1; 
items.set(position, items.get(position) - 1); 
+0

感谢您的快速响应人,但'ItemArray.get(位置) - 1'返回一个错误'运算符 - 未定义为参数类型的字符串,int' – Jack

+2

@Jack这意味着您的列表设置为包含字符串。 Java是强类型的,它不会神奇地将字符串转换为数字值。请将您的列表指定为包含Integer类型或[将字符串转换为整数](http://download.oracle.com/javase/7/docs/api/java/lang/Integer.html#valueOf(java.lang 。串))。 –

+0

啊辉煌,这是完美的谢谢你=)你可以把你的答案转换为一个整数的东西吗?谢谢。 – Jack

2

ArrayList是一类。假设ItemArray是该类的一个实例(请以小写字母顺序启动变量),您需要通过方法调用来使用它。在你的情况下,set。像这样:

itemArray.set(pressedItem + 1, itemArray.get(pressedItem + 1) - 1) 

记住,上面只会工作完全一样,如果你宣布你ArrayList为包含整数或一些其他数字类型,所以Java能为你做转换的东西:

List<Integer> itemArray = new ArrayList<Integer>(); 
+0

看起来不像我可以用来声明我的ArrayList,因为我用CSV文件的内容填充它:/它当前为 Jack

+1

@Jack然后,您将不得不a)在填充列表或b)存储字符串并在使用时进行转换。 a)是可取的,因为它可以更快地捕捉不正确的输入,并且使后面的处理更容易。 –