Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较Scala列表与Java列表_Java_List_Scala_Comparison_Equality - Fatal编程技术网

比较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列表和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

是否有一些静态帮助器比较方法同时接受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
。我回答的答案在此之后被删除。因此,我认为另一个答案实际上是更好的答案。让我投票赞成。