如何将带有标记的Object []转换为整数数组?

时间:2011-06-16 21:30:23

标签: java arrays object methods arraylist

我正在尝试编写一个方法,该方法接受一个用标记填充的Object []并将其转换为整数数组。

我开始使用ArrayList:

ArrayList<String> colArr = new ArrayList<String>();

然后使用.txt文件中的标记填充它:

while(st.hasMoreTokens()){
    colArr.add(st.nextToken());
}

然后将其转换为Object []:

Object[] newColArr = colArr.toArray();

我现在需要编写一个将此Object []转换为Integer的方法,以便我可以将某些元素添加到一起。这就是我试过的:

public static Integer[] convert(Object[] objectArray){
    Integer[] intArray = new Integer[objectArray.length];

    for(int i=0; i<objectArray.length; i++){
        intArray[i] = (Integer) objectArray[i];
    }
    return intArray;
}

但得到了“错误:java.lang.String无法转换为java.lang.Integer ”。

6 个答案:

答案 0 :(得分:4)

使用Integer.valueOf(objectArray[i])而不是像(Integer)objectArray[i]

那样投射

编辑:

为了澄清,请记住Integer.valueOf()只是Integer.parseInt()周围的盒装对象..所以你必须处理NumberFormatException。 如果您确定您的文本文件只包含整数,那么您可以只使用整数的arraylist并执行Integer.valueOf(tokenizer.nextToken())

答案 1 :(得分:1)

Integer.parseInt(string);适用于从String获取Integer

答案 2 :(得分:1)

遍历你的字符串数组并使用Integer.parseInt();

答案 3 :(得分:1)

你不能直接从java.lang.String转换为java.lang.Integer,它们是两个完全不同的对象。而是尝试做:

Integer.parseInt(objectArray[i])

不要忘记处理java.lang.NumberFormatException。还有一件事,你不需要做中间转换到Object数组。当然除非您将其用于其他事情,否则您没有提及。欢呼声。

答案 4 :(得分:0)

如果你知道,对象数组包含字符串,你可以使用Integer.parseInt()将String转换为整数

答案 5 :(得分:0)

您还可以使用guava's Lists.transform

List<String> numberList=Lists.newArrayList("1","2","3");
    List<Integer> trnsList = Lists.transform(numberList,new Function<String,Integer>() {
    @Override
    public Integer apply(String arg0) {
        return Integer.valueOf(arg0);
     }
    });
    Integer[] intArr=trnsList.toArray(new Integer[trnsList.size()]);