1

Guava の関数を使用して、以下の 1 つのリスト文字列値 ( List<List<String>>) のリストを 1 つの整数 ( )のリストに変換するにはどうすればよいですか?List<Integer>

List<String> list1 = ImmutableList.of("1", "2");
List<String> list2 = ImmutableList.of("3", "4");
List<String> list3 = ImmutableList.of("5", "6");
List<List<String>> lists = ImmutableList.of(list1, list2, list3);

これは、foreach を使用する代わりに私が行うことです。

`List<Integer> ints = new ArrayList<Integer>();
  for (List<String> list : lists) {
   for (String string : list) {
    Integer integer = Integer.valueOf(string);
    ints.add(integer);
    }
 }`
4

2 に答える 2

3
public final class StringToIntegerAdapter implements Function<String, Integer> {

    public static final StringToIntegerAdapter INSTANCE = new StringToIntegerAdapter();

    /** Private constructor forces everyone to use the singleton. */
    private StringToIntegerAdapter() {
    }

    @Override
    @Nullable
    public Integer apply(@Nullable final String str) {
        if (str == null) {
            return null;
        } else {
            return Integer.valueOf(str);
        }
    }
}

それができたら、文字列リストを 1 行で整数リストに変換できます。

List<String> stringList = getMyStrings();
List<Integer> intList = Lists.transform(stringList, StringToIntegerAdapter.INSTANCE);
于 2013-10-04T03:10:30.887 に答える
1

@Jim の StringToIntegerAdapter を使用すると、Guava で次のメソッドを使用して、目的の変換をコンパクトに実行できます。

List<List<String>> strings = getString();
List<Integer> intList = Lists.newArrayList(Iterables.transform(
    Iterables.concat(strings), StringToIntegerAdapter.INSTANCE);
于 2013-10-04T03:37:39.257 に答える