1

如何使用 Guava 的函数将List<List<String>>下面的列表字符串值列表 ( ) 转换为整数列表 ( )?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);
        }
    }
}

一旦你有了它,你可以在一行中将你的字符串列表转换为整数列表:

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 回答