Java中与Python的itertools.groupby()等效的方法是什么?

6
以下是关于Python中itertools.groupby()的使用示例:

这里是一个使用示例:

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

在Java中是否有任何语言结构或库支持可以实现与itertools.groupby()相同的功能?


你并没有确切地解释groupby的功能。 - Jeffrey
2个回答

6
最接近的可能是在Apache Functor。请查看Java中Functors,Transformers,Predicates和Closures的示例,您将找到一个示例。
顺便说一句 - 不要期望看到像Python那样用2-3行代码实现这些功能的东西。 Java并不是以具有良好的函数特性的语言而设计的。 它根本没有像脚本语言那样包含大量的语法糖。 也许在Java 8中会看到更多这些事情的结合。这就是为什么Scala出现的原因,看看我之前提出的这个问题,我得到了非常好的相关答案。正如您在我的问题中所看到的,在Python中实现递归函数比在Java中实现要好得多。 Java有很多好的特性,但绝对不是函数式编程的其中之一。

0

亲爱的CDMP,你能否概述一下解决方案可能是什么样子?链接往往会过时... - Trinimon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接