Java相当于Python的itertools.groupby()?

Ant*_*ong 6 python java functional-programming

以下是itertools.groupby()Python中的示例用例:

from itertools import groupby

Positions = [   ('AU', '1M', 1000),
                ('NZ', '1M', 1000),
                ('AU', '2M', 4000),
                ('AU', 'O/N', 4500),  
                ('US', '1M', 2500), 
           ]

FLD_COUNTRY = 0
FLD_CONSIDERATION = 2

Pos = sorted(Positions, key=lambda x: x[FLD_COUNTRY])
for country, pos in groupby(Pos, lambda x: x[FLD_COUNTRY]):
    print country, sum(p[FLD_CONSIDERATION] for p in pos)

# -> AU 9500
# -> NZ 1000
# -> US 2500
Run Code Online (Sandbox Code Playgroud)

Java中是否有任何语言构造或库支持可以实现或者可以实现itertools.groupby()上述功能?

Man*_*res 6

最接近的可能是Apache Functor.查看Java的Functors,Transformers,Predicates和Closures示例,您将其中找到示例.

顺便说一句 - 不要期望看到像Python这样的东西,这些东西是用2-3行代码实现的.Java并未被设计为具有良好功能特性的语言.它根本不包含许多像脚本语言那样的语法糖.也许在Java 8中会看到更多这些东西汇集在一起.这就是为什么Scala出现的原因, 看到我之前提出的这个问题,我得到了很好的相关答案.正如您在我的问题中所看到的,实现递归函数在Python中比在Java中更好.Java有很多很好的功能,但绝对功能编程并不是其中之一.