相当于Java 7中的map(from haskell)

前端之家收集整理的这篇文章主要介绍了相当于Java 7中的map(from haskell)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Haskell中有一个叫做map的函数,它使用A类的列表和一个函数f,将类型A的值映射到类型B的值.它返回一个类型B的列表,使得结果列表的每个元素来自调用f到输入列表中的值.

例如,给定

>一个列表m = [‘a’,’b’,’c’],
>和函数f = {‘a’ – > 1,’b’ – > 2,’c’ – > 3},
然后映射(m,f)= [1,2,3].

是否有可用于Java 7的图书馆,提供类似地图功能的图书?我已经看过apache CollectionUtils,发现了forAllDotransform,但是它们不允许重新调整完全不同类型的集合.出于同样的原因,其他图书馆的Google搜索失败.

要明确:我知道如何自己解决这个问题,但我强烈地认为,必须已经有一个很好的图书馆来更好地执行这个任务.

奖金问题:有没有一些相当于Haskell函子(即从集合转到可迭代)可用于Java 7?进一步的解释:是否有一个地图函数,它需要一个可迭代的< A>而不是集合< A>并返回可替代的< B>而不是Collection< B> (由拟合函数f提供)?

解决方法

您要求Java 7(使用Java 8更容易):

您可以使用Guava,具体FluentIterable

final List<String> strings = Arrays.asList("a","b","c");
    final List<Integer> integers = FluentIterable
            .from(strings)
            .transform(new Function<String,Integer>() {
                @Nullable
                @Override
                public Integer apply(@Nullable String input) {
                    return input.equals("a") ? 1 : input.equals("b") ? 2 : input.equals("c") ? 3 : -1;
                }
            })
            .toList();

奖金问题:集合是一个迭代:-)

原文链接:https://www.f2er.com/java/122073.html

猜你在找的Java相关文章