String arraylistがあり、それをdouble arraylistに変換します。for,While のようなループを使用して変換する以外に方法はありますか?
ArrayList<String> S=new ArrayList<String>();
S=FillTheList();
ArrayList<Double> D=new ArrayList<Double>();
適切な JDK では、バージョン 7 まで、いいえ。ただし、JDK 8 には関数型プログラミングのサポートがあります (構文については、以下の @JBNizet によるコメントを参照してください)。
ただし、 Guavaを使用してこれを実現できます。
final Function<String, Double> fn = new Function<String, Double>()
{
@Override
public Double apply(final String input)
{
return Double.parseDouble(input);
}
};
// with S the original ArrayList<String>
final List<Double> D = Lists.transform(S, fn);
このコードにはループはありませんが、内部的にはコードがループを使用することに注意してください。
String
ただし、元の質問の要点として、 aを aにキャストすることはできませんDouble
。これらは 2 つの異なるクラスであるためです。上記のような解析方法を実行する必要があります。
ArrayList
完了時に実際に yourにs を含めたいと仮定するとDouble
、いいえ、代替手段はありません。ループして、それぞれString
を aに変換し、を new にDouble
追加する必要があります。Double
ArrayList
実行時に、Java は実際には aList
に含まれる型を認識していないことに注意してください。ArrayList<Double>
それが であることは認識していませんArrayList
。ArrayList<String>
したがって、JVM が( としても認識される)のコンテンツを変換してArrayList
に追加するためにどのような操作を行う必要があるかを知る方法はありませんArrayList<Double>
。