微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

相当于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.jb51.cc/java/122073.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐