【发布时间】:2017-10-13 16:59:48
【问题描述】:
我正在尝试在 jython 中试验 java 8 流和集合,看看它们在纯 jython 中实现时是否有效。在我看来它可以(对此也表示赞赏)
我从一些例子开始,计数
from java.util.function import Function
from java.util import ArrayList
from java.util.stream import Collectors
letters = ArrayList(['a','b','a','c']);
cnt=letters.stream().collect(Collectors.groupingBy(Function.identity(),
Collectors.counting()))
将cnt打印为字典 {u'a': 2L, u'b': 1L, u'c': 1L}
到目前为止一切顺利。接下来,我找到了一个在 java 中对流使用过滤器的示例
List<String>strings = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl");
//get count of empty string
int count = strings.stream().filter(string -> string.isEmpty()).count();
这在 jython 中如何翻译。具体来说,如何在 jython 中编写类似 string -> sting.isEmpty() 的 java lambda 表达式?
【问题讨论】:
-
创建一个
Predicate对象并将其传递给Stream.filter。箭头语法只是语法糖。在幕后,您定义了一个Predicate对象,该对象有一个参数并返回一个boolean结果。 docs.oracle.com/javase/8/docs/api/java/util/stream/… -
@iceArdor 谢谢,用它来回答问题
标签: jython jython-2.7