如何将Java列表传递给Scala,在Scala中过滤并返回Java?

如何将Java列表传递给Scala,在Scala中过滤并返回Java?,java,list,scala,filter,Java,List,Scala,Filter,例如: 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 =

例如:

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> ?           
}
}
package example.javascala.list;
导入java.util.array;
导入java.util.List;
公共类usescalister{
公共静态void main(字符串[]args){
String[]words={“a”、“very”、“long”、“list”、“of”、“words”};
List lst=Arrays.asList(单词);
//在这里调用Scala代码,从Java列表中过滤单词“a”并返回列表?
}
}
问题:

  • 要筛选的Scala对象
    java.util.List

  • 如何调用Scala并获取过滤列表

试试这个:

import scala.collection.*;

Collection<String> filtered = JavaConversions.asJavaCollection(JavaConversions.asScalaIterable(lst).filter(...));
导入scala.collection.*;
Collection filtered=JavaConversions.asJavaCollection(JavaConversions.asScalaIterable(lst.filter)(…);
更新

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

Collection<String> backToJava = JavaConversions.asJavaCollection(scalaIterable);
Iterable scalaIterable=JavaConversions.asScalaIterable(lst);
可伸缩过滤器(…);
可标度压降(1);
可伸缩的。更多(…);
Collection backToJava=JavaConversions.asJavaCollection(可伸缩);

Qool oneliner!若我需要在Scala中进行几个列表转换,并将结果返回给Java呢。如何定义一个单独的Scala对象,其中包含几个从Java调用的List arg方法?谢谢!但这并不是我所期望的答案。在您的示例中,只有Java代码。看到用户定义(不是标准的Scala库)的Scala对象封装列表操作会很有趣。换句话说,Java调用仅在Scala对象上使用定义的API,并在Scala中实现。例如,Scala对象可能有
进程(lst:List)
方法。此方法获取Java列表,并对其进行函数组合,如
map.filter。这个Scala对象是什么样子的?