Java:有没有地图函数?
2022-08-31 07:09:04
我需要一个地图函数。Java中已经有这样的东西了吗?
(对于那些想知道的人:我当然知道如何自己实现这个微不足道的功能......)
从Java 8开始,在JDK中有一些标准选项可以做到这一点:
Collection<E> in = ...
Object[] mapped = in.stream().map(e -> doMap(e)).toArray();
// or
List<E> mapped = in.stream().map(e -> doMap(e)).collect(Collectors.toList());
请参阅 java.util.Collection.stream()
和 java.util.stream.Collectors.toList()。
从java 6开始,JDK中没有函数的概念。
Guava有一个函数接口,Collections2.transform(Collections<E>,Function<E,E2>)
方法提供了您需要的功能。
例:
// example, converts a collection of integers to their
// hexadecimal string representations
final Collection<Integer> input = Arrays.asList(10, 20, 30, 40, 50);
final Collection<String> output =
Collections2.transform(input, new Function<Integer, String>(){
@Override
public String apply(final Integer input){
return Integer.toHexString(input.intValue());
}
});
System.out.println(output);
输出:
[a, 14, 1e, 28, 32]
如今,在Java 8中,实际上有一个map函数,所以我可能会以更简洁的方式编写代码:
Collection<String> hex = input.stream()
.map(Integer::toHexString)
.collect(Collectors::toList);