2014-03-12 34 views
3

例如:如何將Java List傳遞給Scala,在Scala中對其進行過濾並返回到Java?

package example.javascala.list; 
import java.util.Arrays; 
import java.util.List; 

public class UseScalaList { 

public static void main(String[] args) { 
    String[] words = {"a", "very", "long", "list", "of", "words"}; 
    List<String> lst = Arrays.asList(words); 

    // Call Scala code here to filter word "a" from Java list and return back List<String> ?   
} 
} 

問題:

  • 斯卡拉對象過濾java.util.List<String>

  • 如何調用Scala和得到過濾列表回來?

回答

3

試試這個:

import scala.collection.*; 

Collection<String> filtered = JavaConversions.asJavaCollection(JavaConversions.asScalaIterable(lst).filter(...)); 

UPDATE

Iterable<String> scalaIterable = JavaConversions.asScalaIterable(lst); 
scalaIterable.filter(...); 
scalaIterable.drop(1); 
scalaIterable.somethingMore(...); 

Collection<String> backToJava = JavaConversions.asJavaCollection(scalaIterable); 
+0

Qool oneliner!如果我需要在Scala中做幾個列表轉換,那麼結果會返回給Java。如何使用列表 arg通過幾種方法定義單獨的Scala對象從Java調用? – DarqMoth

+0

請參閱我的編輯 – serejja

+0

謝謝!不完全是我預期的答案。在你的例子中只有Java代碼。看到用戶定義的(不是標準的Scala庫)Scala對象封裝列表操作會很有趣。換句話說,Java只調用Scala對象上使用定義的API並在Scala中實現。例如Scala對象可能有'process(lst:List)'方法。該方法獲取Java列表,並對其執行函數組合,如'map.filter。 ...'。這個_Scala object_看起來像什麼? – DarqMoth

相關問題