Java 如何处理从嵌套ArrayList获取整数值并将其添加到列表中

Java 如何处理从嵌套ArrayList获取整数值并将其添加到列表中,java,arraylist,Java,Arraylist,我收到以下消息 java.util.ArrayList cannot be cast to java.lang.Integer 在尝试从嵌套数据库获取值时 arraylistlistsall 并将值添加到 列表价格最终版 listPriceFinal.add(Integer.valueOf((Integer)listsALL.get(2))); listsALL包含整数、字符串值 例如: listsALL------------- [[0, 1, 5, 4, 6], [250, 260],

我收到以下消息

java.util.ArrayList cannot be cast to java.lang.Integer
在尝试从嵌套数据库获取值时
arraylistlistsall
并将值添加到
列表价格最终版

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.valueOf()
获取某些内容并将其添加到整数数组中。如果您想要整数,请在调用
listsALL.get(2)
时使用类似于。在您的示例中,您得到[230]

这就是错误的原因。不能将数组[230]强制转换为整数

相反,您应该获得数组的一项。例如:
((int[])listsALL.get(2))[0]

所以应该是:
listPriceFinal.add(Integer.valueOf(((int[])listsALL.get(2))[0])

如果内部项不是简单数组,而是ArrayList,则需要使用:

listPriceFinal.add(Integer.valueOf( ((ArrayList)listsALL.get(2)).get(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);
    }
}

其思想是将对象从父对象
列表
强制转换为
列表
列表

否,对于整数,我使用整数数组列表,对于字符串-字符串数组列表。感谢您的回复,当我尝试使用listPriceFinal.add(Integer.valueOf((int[])listsALL.get(2))[0]);我得到一个messgae-java.util.ArrayList无法转换为[i]。你能告诉我如何解决这个问题吗?试试这个:listPriceFinal.add(Integer.valueOf(((ArrayList)listsALL.get(2)).get(0));谢谢你的帮助,我得到了解决方案。listPriceFinal.addAll((List)listsALL.get(2));感谢您的回复,我从您的示例中得到了解决方案。是的,它对我有效。listPriceFinal.addAll((List)listsALL.get(2));
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]