1. ホーム
  2. java

[解決済み] 文字列の配列/リストを整数の配列/リストに変換するラムダ式

2022-10-21 04:23:41

質問

Java 8には強力なラムダ式があります。

文字列のリスト/配列を、整数、浮動小数点、倍数などの配列/リストに変換する関数を書きたいと思います。

通常のJavaでは、次のような簡単なものになります。

for(String str : strList){
   intList.add(Integer.valueOf(str));
}

しかし、Stringの配列をIntegerの配列に変換するラムダで、同じことを実現するにはどうしたらよいでしょうか。

どのように解決するのですか?

型のリスト (配列) を変換するヘルパーメソッドを作成することができます。 T 型のリスト (配列) に変換するヘルパーメソッドを作ることができます。 U を使って map の操作で stream .

//for lists
public static <T, U> List<U> convertList(List<T> from, Function<T, U> func) {
    return from.stream().map(func).collect(Collectors.toList());
}

//for arrays
public static <T, U> U[] convertArray(T[] from, 
                                      Function<T, U> func, 
                                      IntFunction<U[]> generator) {
    return Arrays.stream(from).map(func).toArray(generator);
}

そして、このように使う。

//for lists
List<String> stringList = Arrays.asList("1","2","3");
List<Integer> integerList = convertList(stringList, s -> Integer.parseInt(s));

//for arrays
String[] stringArr = {"1","2","3"};
Double[] doubleArr = convertArray(stringArr, Double::parseDouble, Double[]::new);


なお s -> Integer.parseInt(s) は、次のように置き換えることができます。 Integer::parseInt (に置き換えることができます(参照 メソッドリファレンス )