将arraylist数据从object / float转换为int以在方法中使用

时间:2014-03-13 00:01:18

标签: java arraylist

我在一个类中存在一个arraylist,我将数字存储在。类中的方法将数据添加到arraylist中需要一个float参数 - 这是因为有些数据是float,有些是整数。

我需要使用方法提取一些数据并将其转换为Int但无法解决问题。我尝试了各种各样的铸造等,但因为它是arraylist中的对象我不能让它工作。

(所以如果这听起来不太清楚,我已经连续8个小时了,所以大脑现在有点油炸了)

例如,arraylist被称为subjectResults,我尝试过:

numberOfA = (Integer)subjectsResults.get(1);

其中numberOfA是一个Int(我知道索引在哪里也是数据 - 这就是我直接引用1的原因)

我尝试过使用toString和parseInt这样的事情:

numberOfA = (Integer.parseInt((String)subjectsResults.get(1)));

我如何实现这一点 - 我需要从索引(1)中提取数字以在switch / case语句中使用以显示菜单选项

2 个答案:

答案 0 :(得分:2)

有几种方法可以解决这个问题,一种直接的方法就是:

Object value = subjectsResults.get(1); 
if (value instanceof Integer) {
  numberOfA = (Integer) value;
} else if (value instanceof Float) {
  numberOfA = ((Float) value).intValue();
} else {
  handle this unusual case
}

更聪明的解决方案是使用公共超类NumberIntegerFloat都是Number的子类 - 因此他们共享方法intValue()

import java.util.ArrayList;
import java.util.List;

public class Snippet {

    public static void main(String[] args) {

        // define test data
        List<Number> subjectsResults = new ArrayList<>();
        subjectsResults.add((int) 50);
        subjectsResults.add((float) 33.333f);

        // create target list
        List<Integer> subjectsNumbers = new ArrayList<>();

        // iterate over input
        for (Number number : subjectsResults) {

            // use method "intValue", which is available for all "Number"-objects
            subjectsNumbers.add(number.intValue());
        }

        System.out.println(subjectsNumbers);
    }

}

控制台中的输出:

[50, 33]

答案 1 :(得分:0)

类似于slartidan的解决方案,除了我不喜欢类型检查,因此将使用泛型。


 public class FloatAndInt {
    private static <T extends Number> void addItemToArray(final T item,final List numberList) {
        numberList.add(item);
    }

private static void iterateArrayList(final List<Number> numberList) {
    for (Number n:numberList) {
       System.out.println(n.intValue());

    }
 }
 public static void main(String args[]) {
    List<Number> numberList = new ArrayList<Number>();
    addItemToArray(2,numberList);
    addItemToArray(4.3f,numberList);
    //addItemToArray(Long.MAX_VALUE, numberList);
    //addItemToArray(Double.MAX_VALUE, numberList);
    iterateArrayList(numberList);
  }

}

输出:

private static void iterateArrayList(final List<Number> numberList) {
    for (Number n:numberList) {
       System.out.println(n.intValue());

    }
 }
 public static void main(String args[]) {
    List<Number> numberList = new ArrayList<Number>();
    addItemToArray(2,numberList);
    addItemToArray(4.3f,numberList);
    //addItemToArray(Long.MAX_VALUE, numberList);
    //addItemToArray(Double.MAX_VALUE, numberList);
    iterateArrayList(numberList);
  }