Java 8によるListからArrayへの変換

771 ワード

開発ではサードパーティのライブラリを呼び出す必要があり、一部のAPIのパラメータ要求はdouble[]配列であり、プログラムはユーザーのページでの入力に基づいてdouble[]を戻り値として計算し、このAPIを呼び出す.
このdouble[]配列の大きさを予め知ることができず、double[]の変数を直接定義することができず、リストを借りてリストにデータを入れてからdouble[]配列に変換するしかないことが多い.これは簡単で、forループ1つで終わりますが、java 8のstream特性を使うとコードをより優雅にすることができます.次に、私のプログラムの例を示します.
List factorValueList = new ArrayList<>();
for (Integer defId : input.getCohortDefIds()) {
	for (double d : calcVarValues(defId, factorVar)) {
		factorValueList.add(d);
	}
}
double[] factorVarValues = factorValueList.stream().mapToDouble(Double::doubleValue).toArray();

List自体にAPIがあり、パラメータ付きのtoArray()ですが、場合によっては、モデルチェンジ後にArrayコンパイルは問題なく、実行時報が間違っていて、具体的に何が間違っているのか忘れてしまい、次回発見してから文章を更新します.
安全のためにstreamを使うのが一番信頼でき、コードもきれいです.