如何处理提取并将嵌套ArrayList中的Integer值添加到List

时间:2014-11-01 05:50:52

标签: java arraylist

我收到以下消息

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)));

如何解决或如何处理整数,请在此帮助... ..

3 个答案:

答案 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>