Python的map函数是否有Java等效物?
2022-09-02 21:54:52
我想轻松地将类A的对象的集合(列表)转换为B类的对象的集合,就像Python的map函数一样。是否有任何“众所周知”的实现(某种库)?我已经在Apache的commons-lang中搜索过它,但没有运气。
我想轻松地将类A的对象的集合(列表)转换为B类的对象的集合,就像Python的map函数一样。是否有任何“众所周知”的实现(某种库)?我已经在Apache的commons-lang中搜索过它,但没有运气。
从Java 8开始,由于Stream API
使用适当的映射器函数
,我们将使用该函数将类的实例转换为类的实例。A
B
伪代码将是:
List<A> input = // a given list of instances of class A
Function<A, B> function = // a given function that converts an instance
// of A to an instance of B
// Call the mapper function for each element of the list input
// and collect the final result as a list
List<B> output = input.stream().map(function).collect(Collectors.toList());
下面是一个具体示例,它将使用 Integer.valueOf(String)
作为映射器函数将 a 转换为 a:List
String
List
Integer
List<String> input = Arrays.asList("1", "2", "3");
List<Integer> output = input.stream().map(Integer::valueOf).collect(Collectors.toList());
System.out.println(output);
输出:
[1, 2, 3]
对于 以前版本的 ,您仍然可以使用 Google Guava 中的 FluentIterable
来替换并使用 com.google.common.base.Function
而不是作为 mapper 函数。Java
Stream
java.util.function.Function
然后,前面的示例将重写为下一个示例:
List<Integer> output = FluentIterable.from(input)
.transform(
new Function<String, Integer>() {
public Integer apply(final String value) {
return Integer.valueOf(value);
}
}
).toList();
输出:
[1, 2, 3]