以下是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()
所做的事情?
答案 0 :(得分:6)
最接近的可能是Apache Functor。看看Examples of Functors, Transformers, Predicates, and Closures in Java,你会在哪里找到一个例子。
BTW - 不要指望在Python中看到类似于2-3行代码的东西。 Java并未被设计为具有良好功能特性的语言。它根本不包含许多像脚本语言那样的语法糖。 Maybe in Java 8 will see more of these things coming together。这就是Scala出现的原因,see this question我之前做过的,我得到了很好的相关答案。正如您在我的问题中所看到的,实现递归函数在Python中比在Java中更好。 Java有很多很好的功能,但绝对功能编程并不是其中之一。答案 1 :(得分:0)
我有完全相同的问题,并通过这个问题的答案找到了neoitertools:http://code.google.com/p/neoitertools/:Is there an equivalent of Python's itertools for Java?