2010-12-07 36 views

回答

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

你有兩個獨立的需要轉換。一個是從List到一個數組。第二種是從一種類型到另一種類型的每個元素。第二個可能或不可能。

首先看到here

對於第二個數字之間存在明確的轉換(整數,雙精度等)。有些是無損的,有些則失去精度。

許多類型有一個字符串表示,所以你可以這樣寫:

String s = foo.toString() 

也許是:

Foo foo = new Foo(s); 

但是你要理解這些 - 沒有魔法。如果沒有字符串序列化,您將獲得對象的機器地址。

2

1)遍歷每個元素,並將其轉換爲double,並在列表中添加到double[]

+1

沒有必要像步驟1那樣將它轉換爲數組。您可以迭代原始列表。 – dogbane 2010-12-07 08:29:04

+0

@dogbane哦,是的。同意,+1。 – 2010-12-07 08:32:23

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()); 
    } 
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; 
} 
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(); 
} 
相關問題