Java 如何从ArrayList

Java 如何从ArrayList,java,android,arraylist,number-formatting,Java,Android,Arraylist,Number Formatting,我有一个数组列表abc,在其中我得到这个值[64.3,25.1,44.3,34.2,6.4,48.5,35.5,59.5,54.6,26.6,11.2,50.3,25.1] 现在我想从中提取整数值,比如64,25,44,34,6,48,35,59,54,26,11,50,25,并将这些数值放入整数数组int[]中 我怎么能得到这个?如何从中删除小数点和小数点后的值 串双 双精度整数 for(int i = 0 ; i < abc.size(); ++i) { tmp = Doubl

我有一个数组列表abc,在其中我得到这个值[64.3,25.1,44.3,34.2,6.4,48.5,35.5,59.5,54.6,26.6,11.2,50.3,25.1]

现在我想从中提取整数值,比如64,25,44,34,6,48,35,59,54,26,11,50,25,并将这些数值放入整数数组int[]中

我怎么能得到这个?如何从中删除小数点和小数点后的值

串双

双精度整数

for(int i = 0 ; i < abc.size(); ++i) {
    tmp = Double.parseDouble(abc.get(i));
    cab[i] = (int)tmp;
    System.out.println(cab[i]);
}
只需迭代:

int[] cab = new int[abc.size()];
for(int i = 0; i < cab.length; i++){
    cab[i] = (int)Float.parseFloat(abc.get(i));
}
在Java 8中:

int[] cab = abc.stream()
        .map(Double::valueOf)
        .mapToInt(Double::intValue)
        .toArray();
试试这个:

Integer cab[] = new Integer[abc.size()];
cab= abc.toArray(cab);

//iterating array
for (Integer cabs: cab) {
System.out.println("cab= " + cabs);
}
其中stringsList是您的Arraylist

使用此代码

Iterator itr = al.iterator();
          while(itr.hasNext()) {

             String s1=itr.next().toString();
             Double d=new Double(s1);
             int s2=d.intValue();
             System.out.print(s2 + " ");
          }

根据Java版本和/或首选项,这里有三种不同但相似的方法:

ArrayList<String> abc = new ArrayList<>(Arrays.asList(
        "64.3", "25.1", "44.3", "34.2", "6.4", "48.5", "35.5",
        "59.5", "54.6", "26.6", "11.2", "50.3", "25.1" ));
System.out.println("abc = " + abc);

// Loop (all Java versions)
int[] cab1 = new int[abc.size()];
for (int i = 0; i < cab1.length; i++)
    cab1[i] = (int)Double.parseDouble(abc.get(i));
System.out.println("cab1 = " + Arrays.toString(cab1));

// Java 8 stream with lambda expression
int[] cab2 = abc.stream()
                .mapToInt(v -> (int)Double.parseDouble(v))
                .toArray();
System.out.println("cab2 = " + Arrays.toString(cab2));

// Java 8 stream with method references
int[] cab3 = abc.stream()
                .map(Double::valueOf)
                .mapToInt(Double::intValue)
                .toArray();
System.out.println("cab3 = " + Arrays.toString(cab3));

但这是ArrayList而不是doublearray@AndroidGeek你不认为这将是一个非常重要的信息来补充这个问题吗?单击编辑链接,我的意思是,对其他人来说,它看起来像一个ArrayList,所以说它们是字符串对象是很重要的,你知道。使用迭代器从数组列表中提取值并转换为int@Andreas我在问题主题中提到过为什么人们在没有仔细阅读的情况下否决了我的问题。这不是我的错,这是读者的错误。不能将java.lang.string转换为int。你的列表abc的类型是什么?我已经提到它不是stringnot在第一个版本中。无论如何,请检查编辑的answer.java.lang.NumberFormatException:无效int:64.3它无法解析符号stream@AndroidGeek好吧,如果你使用的是Android,你没有Java8。循环所有Java版本,它给我的索引超出了范围exception@AndroidGeek我执行代码生成输出,所以你一定是复制错了。好的,我正在重新复制,但仍然是相同的错误java.lang.ArrayIndexOutOfBoundsException:length=13;index=13:为什么不使用for循环?为什么不使用泛型?Double.parseDoubles1会更好,因为它不会为结果创建包装器对象。
ArrayList<String> abc = new ArrayList<>(Arrays.asList(
        "64.3", "25.1", "44.3", "34.2", "6.4", "48.5", "35.5",
        "59.5", "54.6", "26.6", "11.2", "50.3", "25.1" ));
System.out.println("abc = " + abc);

// Loop (all Java versions)
int[] cab1 = new int[abc.size()];
for (int i = 0; i < cab1.length; i++)
    cab1[i] = (int)Double.parseDouble(abc.get(i));
System.out.println("cab1 = " + Arrays.toString(cab1));

// Java 8 stream with lambda expression
int[] cab2 = abc.stream()
                .mapToInt(v -> (int)Double.parseDouble(v))
                .toArray();
System.out.println("cab2 = " + Arrays.toString(cab2));

// Java 8 stream with method references
int[] cab3 = abc.stream()
                .map(Double::valueOf)
                .mapToInt(Double::intValue)
                .toArray();
System.out.println("cab3 = " + Arrays.toString(cab3));