如何从List转换为不同类型的原始数组

时间:2010-12-07 08:14:21

标签: java

如何从List转换为不同类型的数组(例如,我想从List<Integer> to double[]转发)

7 个答案:

答案 0 :(得分:4)

遍历列表并转换每个元素。以下是List<Integer>double[]的示例。

public static double[] integersToDoubles(List<Integer> integers) {
    double[] ret = new double[integers.size()];
    for (int i = 0; i < ret.length; i++) {
        ret[i] = integers.get(i).doubleValue();
    }
    return ret;
}

答案 1 :(得分:2)

你试过toArray吗?您可以找到一个简单的示例here

答案 2 :(得分:2)

1)迭代每个元素并将其转换为double并将其添加到double[]

答案 3 :(得分:1)

您需要进行两次单独的转换。一个是从List到数组。第二种是从一种类型到另一种类型的每种元素。第二种可能是也可能是不可能的。

首先看here

第二种是数字之间有明确定义的转换(整数,双数等)。有些是无损的,有些是精确的。

许多类型都有String表示,因此您可以编写:

String s = foo.toString()

或许:

Foo foo = new Foo(s);

但你必须明白这些 - 没有魔力。如果没有String序列化,您将获得该对象的机器地址。

答案 4 :(得分:0)

我希望这有充分的帮助

List<Integer> List = new ArrayList<Integer>();
    List.add(new Integer(100));
    List.add(new Integer(200));
    List.add(new Integer(300));
    double[] db =new double[List.size()];
    System.out.println(List);
    for(int i=0;i<List.size();i++)
    {
        System.out.println(List.get(i).toString());
        db[i]=Double.parseDouble(List.get(i).toString());
    }

答案 5 :(得分:0)

一般方法 - 采用任何类型的集合和任何Number输入(甚至是混合类型):

public static double[] toDoubles(Collection<? extends Number> numbers) {
    double[] result = new double[input.size()];
    int index = 0;

    for (Number number:numbers)
        result[index++] = number.doubleValue();

    return result;
}

答案 6 :(得分:0)

如果您使用的是Java 8,则只需一行代码即可实现此目的:

/**
 * Transform a list of objects into an array of primitives
 * 
 * @param listOfObject
 * @return
 */
public static double[] convertToPrimitives(List<Double> listOfObjects) {
    return listOfObjects.stream().mapToDouble(Double::doubleValue).toArray();
}

/**
 * Transform a list of objects into an array of primitives
 * 
 * @param listOfObject
 * @return
 */
public static double[] convertToPrimitives(List<Integer> listOfObjects) {
    return listOfObjects.stream().mapToDouble(Integer::doubleValue).toArray();
}