该列表可能同时包含整数和字符串值。在这种情况下,我应该创建对象列表,对吗?
List<Object> list = new ArrayList<Object>();
如何使用列表的整数条目执行简单的算术运算?
list.add(1);
list.add("ok");
list.add(2);
Integer a = list.get(0) - list.get(2); // does not work
该列表可能同时包含整数和字符串值。在这种情况下,我应该创建对象列表,对吗?
List<Object> list = new ArrayList<Object>();
如何使用列表的整数条目执行简单的算术运算?
list.add(1);
list.add("ok");
list.add(2);
Integer a = list.get(0) - list.get(2); // does not work
您需要将Object
s 转换为 int,因为-
未在 s 上定义运算符,Object
并且 Java 不会自动将它们拆箱。
Integer a = ((Integer)list.get(0)) - ((Integer)list.get(2));
那是因为最终,list.get(0);
是一个Object
. 如果要对其进行算术运算,则必须对其进行强制转换:
Integer a = (Integer) list.get(0) - (Integer) list.get(2);
老实说,这是一个非常糟糕的设计。如果您想遍历该列表怎么办?您必须手动检查元素是字符串还是整数。泛型引入 Java 是有原因的。
你不能列出 2 个列表:一个用于字符串,一个用于整数。或者至少使用一个列表而不是使用字符串使用(通常未使用的)整数值?