当前位置:  开发笔记 > 编程语言 > 正文

相当于Java 7中的map(来自haskell)

如何解决《相当于Java7中的map(来自haskell)》经验,为你挑选了1个好方法。

在Haskell中有一个名为的函数map,它接受List of Type A和一个函数f,将类型A的值映射到type 的值B.它返回一个类型列表B,这样结果列表的每个元素都来自f对输入列表中值的调用.

例如,给定

一份清单m = ['a', 'b', 'c'],

和一个功能f = {'a' -> 1, 'b' -> 2, 'c' -> 3},

然后map(m, f) = [1, 2, 3].

是否有一个可以与Java 7一起使用的库提供类似map功能的库?我已经查看了apache CollectionUtils并发现了像forAllDo和transform这样的东西,但它们不允许重新调整一个完全不同类型的集合.谷歌搜索其他库失败的原因相同.

要明确:我知道如何自己解决问题,但我强烈认为必须已经存在一个更好地执行此任务的好库.

额外的问题:在Java 7中是否有一些与Haskell仿函数相当的东西(即从集合转移到迭代)?进一步的解释:是否有一个map函数Iterable代替Collection并返回一个Iterable而不是Collection(由拟合函数提供f)?



1> spa..:

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

你可以使用Guava,特别是FluentIterable

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

奖金问题:集合是可迭代的:-)

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有