Ich versuche, ein List<Long> in ein double[] in Java zu konvertieren.

Ich habe auf folgende Weise getan:

  List<Long> longList = ........;

  int len = longList.size();

  double[] doubleArray = new double[len];

  for (int i = 0; i < len; i++)
     doubleArray[i] = (double) longList.get(i);

Ich frage mich, ob ich es intelligenter machen kann (und wie). Da ich Java-8 verwende, habe ich eine Konvertierung mit der Stream-Methode gesehen. Konnte aber nichts finden, was mein Problem lösen könnte.

3
abhimanyue 19 Feb. 2020 im 18:41

3 Antworten

Beste Antwort

Sie könnten es tatsächlich mit einem Stream tun:

double[] result = longList.stream()
                          .mapToDouble(Long::doubleValue)
                          .toArray();

Es ist vielleicht etwas kürzer und sauberer, aber Sie werden in Bezug auf die Leistung nichts gewinnen.

3
assylias 19 Feb. 2020 im 15:45

Benutz einfach:

double[] doubleArray = longList.stream().mapToDouble(v -> v).toArray();
1
Manoj Banik 19 Feb. 2020 im 15:46

Wenn Sie Java 8 verwenden, versuchen Sie Folgendes:

list.stream().map(v -> (double)v)
    .toArray(Double[]::new);
0
Misha Lemko 19 Feb. 2020 im 15:45