将Doubles的Arraylist转换为整数的ArrayList

sna*_*ken 1 java casting arraylist

我试图将ArrayList转换为ArrayList.我实际上在Double中有一个标签列表,我想创建一个整数列表.我想把这个添加到另一个但当然我需要一个铸造过程.

ArrayList<Integer> lab = new ArrayList<Integer>();
lab.addAll(labels.data); //labels.data is an Arraylist of Doubles.
Run Code Online (Sandbox Code Playgroud)

如何将一个列表转换为另一个?我试过这个逐个添加:

ArrayList<Integer> lab = new ArrayList<Integer>();

     for (int i = 0; i < labels.data.size(); i++) {

            lab.set(i, labels.data.get(i).intValue());

    }
Run Code Online (Sandbox Code Playgroud)

但是我收到了outOfBoundsError.

Jon*_*sky 8

首先,是否需要特别是ArrayList,或者这些是包装类而不是原语?如果没有,使用简单数组将避免装箱和拆箱的开销,以及存储大量对象的开销.

除此之外,您可能希望循环遍历列表并将每个项目转换为double(或Double),然后将其添加到新数组(或ArrayList).没有批量操作.


Ran*_*ion 8

您无法直接转换List<Double>List<Integer>.循环每个Double对象并调用intValue()函数以获取它的整数部分.因为例如13.3会给13.我希望那就是你想要的.

for(Double d : labels.data){
    lab.add(d.intValue());
}
Run Code Online (Sandbox Code Playgroud)

  • @snakeplissken,您收到错误,因为`set`函数用于替换列表中的值,而不是添加到列表中.正确使用的功能是`add`.见http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#set(int,E) (4认同)