如何使用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);
}
}`
答案 0 :(得分: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);
}
}
}
完成后,您可以将String列表转换为一行中的整数列表:
List<String> stringList = getMyStrings();
List<Integer> intList = Lists.transform(stringList, StringToIntegerAdapter.INSTANCE);
答案 1 :(得分:1)
使用@ Jim的StringToIntegerAdapter,您可以使用Guava中的以下方法紧凑地执行所需的转换:
List<List<String>> strings = getString();
List<Integer> intList = Lists.newArrayList(Iterables.transform(
Iterables.concat(strings), StringToIntegerAdapter.INSTANCE);