参考scala官网:
http://www.scala-lang.org/api/current/index.html#scala.collection.JavaConverters$
可以得出如下的转换对应关系:
scala.collection.Iterable <=> Java.lang.Iterable
scala.collection.Iterable <=> java.util.Collection
scala.collection.Iterator <=> java.util.{ Iterator, Enumeration }
scala.collection.mutable.Buffer <=> java.util.List
scala.collection.mutable.Set <=> java.util.Set
scala.collection.mutable.Map <=> java.util.{ Map, Dictionary }
scala.collection.mutable.ConcurrentMap <=> java.util.concurrent.ConcurrentMap
scala.collection.Seq => java.util.List
scala.collection.mutable.Seq => java.util.List
scala.collection.Set => java.util.Set
scala.collection.Map => java.util.Map
java.util.Properties => scala.collection.mutable.Map[String, String]
public static void testSet(Set<Integer> set){
for(Integer s : set){
System.out.println(s);
}
}
Scala中调用
var set = Set[Integer](1, 2, 3, 4)
CollectionsTest.testSet(set)
这时候就会发送 scala set => java set 的隐式转换。
public static List<String> list;
static{
list = new ArrayList<>();
list.add("list1");
list.add("list2");
list.add("list3");
}
在Scala中调用
val test : Iterable[String] = CollectionsTest.iterable
var set = Set[Integer](1, 2, 3, 4)
java 代码
public static Iterable<String> iterable;
static{
Set<String> sets = new HashSet<String>();
sets.add("sets1");
sets.add("sets2");
sets.add("sets3");
iterable = sets;
}