3

String arraylistがあり、それをdouble arraylistに変換します。for,While のようなループを使用して変換する以外に方法はありますか?

ArrayList<String>  S=new ArrayList<String>();

S=FillTheList();

ArrayList<Double>  D=new ArrayList<Double>();
4

2 に答える 2

6

適切な 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 つの異なるクラスであるためです。上記のような解析方法を実行する必要があります。

于 2013-06-01T15:34:46.200 に答える
2

ArrayList完了時に実際に yourにs を含めたいと仮定するとDouble、いいえ、代替手段はありません。ループして、それぞれStringを aに変換し、を new にDouble追加する必要があります。DoubleArrayList

実行時に、Java は実際には aListに含まれる型を認識していないことに注意してください。ArrayList<Double>それが であることは認識していませんArrayListArrayList<String>したがって、JVM が( としても認識される)のコンテンツを変換してArrayListに追加するためにどのような操作を行う必要があるかを知る方法はありませんArrayList<Double>

于 2013-06-01T15:33:29.977 に答える