2010-12-07 6 views

Antwort

4

Loops über die Liste und jedes Element umwandeln. Hier ein Beispiel für List<Integer> bis 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

Gute Antwort. +1. – aioobe

1

Sie haben zwei getrennte (zB würde ich von List<Integer> to double[] gehen mag) Konvertierungen erforderlich. Einer ist von einer Liste zu einem Array. Die zweite ist für jedes der Elemente von einem Typ zum anderen. Die zweite kann oder kann nicht möglich sein.

Zum ersten siehe here.

Für die zweite gibt es wohldefinierte Transformationen zwischen Zahlen (Ints, Doubles, etc.) Einige sind verlustfrei, andere verlieren Präzision.

Viele Arten haben eine Darstellung String und so können Sie schreiben:

String s = foo.toString() 

und vielleicht:

Foo foo = new Foo(s); 

Aber Sie müssen diese verstehen - es gibt keine Magie. Wenn es keine String-Serialisierung gibt, erhalten Sie die Maschinenadresse des Objekts.

2

1) Iterate jedes Element finden und wandeln es in double und fügen Sie es double[]

+1

Es ist nicht notwendig, es in ein Array wie in Schritt 1 zu konvertieren. Sie können nur über die ursprüngliche Liste iterieren. – dogbane

+0

@dogbane oh ja. einverstanden, +1. –

0

Ich hoffe, dass diese Hilfe voll

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

Ein allgemeiner Ansatz - nimmt jede Art von Sammlung und jeden Number Eingang (auch Mischtypen):

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

Wenn Sie mit Java 8, können Sie dies mit nur einer Zeile Code erreichen:

/** 
* 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(); 
} 
Verwandte Themen