我收到以下消息
java.util.ArrayList cannot be cast to java.lang.Integer
尝试从嵌套中获取值时
arraylist<Object> listsALL
并将值添加到
list<Integer> listPriceFinal
listPriceFinal.add(Integer.valueOf((Integer)listsALL.get(2)));
listsALL包含整数,字符串值
示例:
listsALL------------- [[0, 1, 5, 4, 6], [250, 260], [230], [Item 1, Item 2, Item 6], [Item 5, Item 7]]
尝试使用String值时,我没有遇到任何问题。 像
sItems100.add(String.valueOf(listsALL.get(4)));
如何解决或如何处理整数,请在此帮助... ..
答案 0 :(得分:2)
当您致电listsALL.get(2)
时,您将获得一个阵列。在你的例子中,你得到了[230]。
这是导致错误的原因。您无法将数组[230]强制转换为整数。
相反,你应该得到一个数组的项目。例如:((int[])listsALL.get(2))[0]
所以它会是:listPriceFinal.add(Integer.valueOf( ((int[])listsALL.get(2))[0] ));
如果内部项不是简单数组,而是ArrayList&#39; s,那么您需要使用:
listPriceFinal.add(Integer.valueOf( ((ArrayList)listsALL.get(2)).get(0) ));
答案 1 :(得分:0)
不确定我是否正确理解您的问题,但是您尝试使用String.valueOf()
来获取某些内容并将其添加到整数数组中? The valueOf()
returns a String。如果您想要整数,请使用类似Integer.parseInt(String)
的内容。
答案 2 :(得分:0)
以下内容可能有所帮助:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Main {
@SuppressWarnings("unchecked")
public static void main(String[] args) {
List<Object> listsAll = new ArrayList<Object>();
listsAll.add(Arrays.asList(new Integer[] { 12, 45, 78 }));
listsAll.add(Arrays.asList(new String[] { "s12", "s45", "s78" }));
List<Integer> intList = new ArrayList<Integer>();
intList.addAll((List<Integer>) listsAll.get(0));
List<String> strList = new ArrayList<String>();
strList.addAll((List<String>) listsAll.get(1));
System.out.println(listsAll);
System.out.println(intList);
System.out.println(strList);
}
}
您将获得输出:
[[12, 45, 78], [s12, s45, s78]]
[12, 45, 78]
[s12, s45, s78]
我们的想法是将对象从父List
转换为List<Integer>
或List<String>
。