我怎么能写一个更高阶的函数,比如map,或者在java中减少?

rad*_*att 5 java functional-programming higher-order-functions

我读了一篇关于Joel On Software的文章,关于使用高阶函数通过使用map和reduce来大大简化代码的想法.他提到在Java中这很难做到.文章:http://www.joelonsoftware.com/items/2006/08/01.html

下面的文章中的示例循环遍历数组,并使用作为数组中每个元素的参数传递的函数fn:

function map(fn, a)
{
    for (i = 0; i < a.length; i++)
    {
        a[i] = fn(a[i]);
    }
}
Run Code Online (Sandbox Code Playgroud)

这将在实践中类似于以下调用:

map( function(x){return x*2;}, a );
map( alert, a );
Run Code Online (Sandbox Code Playgroud)

理想情况下,我想编写一个map函数来处理数组,或者尽可能编写任何类型的Collections.

我一直在互联网上四处看看,我很难找到有关这个问题的资源.首先,java中的匿名函数是否可行?这有可能以另一种方式吗?它将在未来的java版本中提供吗?如果可能,我该怎么办?

我想如果在Java中这是不可能的,人们会用某种"模式"/技术来达到同样的效果,因为我认为匿名函数在软件世界中是一个非常强大的工具.我能找到的唯一类似的问题是:Java泛型 - 实现像map这样的高阶函数,这对我来说毫无意义.

Chr*_*ung 6

番石榴提供地图(但它被称为transform代替,并在工具类,如ListsCollections2).但是,它不提供折叠/缩小.

无论如何,transformmap在Scheme中使用相比,使用的语法非常笨拙.如果你是右撇子,这有点像用左手写字.但是,这是Java; 你能指望什么.:-P