0
我正在嘗試使用jython中的java 8個流和集合進行實驗,以查看它們在純jython中實現時是否有效。我突然想起它可以如何在Jython中使用Java 8 lambdas
我開始用一些例子(任何在此也感謝評論),計數
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。具體如何可以寫一個java lambda表達式,如jython中的string - > sting.isEmpty()?
創建'Predicate'對象並將其傳遞給'Stream.filter'。箭頭語法只是語法糖。在幕後,你正在定義一個具有參數的'Predicate'對象並返回一個'boolean'結果。 https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html#filter-java.util.function.Predicate- – IceArdor
@iceArdor謝謝,用它來回答這個問題 – suvy