比较Scala列表与Java列表
如何比较Scala列表和Java列表比较Scala列表与Java列表,java,list,scala,comparison,equality,Java,List,Scala,Comparison,Equality,如何比较Scala列表和Java列表 scala> List(1, 2, 3, 4, 5) res0: List[Int] = List(1, 2, 3, 4, 5) scala> java.util.Arrays.asList(1, 2, 3, 4, 5) res1: java.util.List[Int] = [1, 2, 3, 4, 5] scala> res0 == res1 res2: Boolean = false 是否有一些静态帮助器比较方法同时接受Scal
scala> List(1, 2, 3, 4, 5)
res0: List[Int] = List(1, 2, 3, 4, 5)
scala> java.util.Arrays.asList(1, 2, 3, 4, 5)
res1: java.util.List[Int] = [1, 2, 3, 4, 5]
scala> res0 == res1
res2: Boolean = false
是否有一些静态帮助器比较方法同时接受Scala列表和Java列表?或者在这两种列表上都有一种“惰性包装器”,我可以通过
==
直接比较吗?。。。或者使用sameements
scala> import collection.JavaConversions._
import collection.JavaConversions._
scala> res0.sameElements(res1)
res3: Boolean = true
您可以使用
JavaConverters
进行以下操作:
scala> import collection.JavaConverters._
import collection.JavaConverters._
scala> res0 == res1.asScala
res2: Boolean = true
请注意,
asScala
仅返回原始列表上的视图,请参阅文档中的asScalaBufferConverter
。请注意,这也会导致Java集合被包装在Scala缓冲区中(使用-Xprint:typer
时显示)。这是实际执行的代码:res0.sameElements(asScalaBuffer(res1))
我可能应该澄清一下,我的答案过去是对其他人答案的回复,他在回答中说,您可以对Scala集合进行隐式转换,然后进行比较,或者逐个比较每个元素。然后,他继续展示了如何做到这一点:有一种方法可以比较每个元素。我只是想说,有一种更简单的方法来比较每个元素的平等性。因此,“…或使用sameElements
。我回答的答案在此之后被删除。因此,我认为另一个答案实际上是更好的答案。让我投票赞成。