2012-04-12 26 views
15

ScalaリストとJavaリストを比較するにはどうすればよいですか?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リストの両方を受け入れるスタティックヘルパーメソッドがありますか?または、両方の種類のリストに「レイジーラッパー」のようなものがありますか?==で直接比較できますか?

答えて

17

...またはsameElementsを使用してください。あなたはこのためにJavaConvertersを使用することができます

scala> import collection.JavaConversions._ 
import collection.JavaConversions._ 

scala> res0.sameElements(res1)    
res3: Boolean = true 
+0

これにより、JavaコレクションがScalaバッファにラップされることにも注意してください( '-Xprint:typer'を使用しているときに表示されます)。 'res0.sameElements(asScalaBuffer(res1))' – robinst

+0

私の答えは、他の誰かの答えに対する返事であることを明確にしておかなければなりません。その答えでは、Scalaへの暗黙の変換すべての要素を1つずつ比較したり比較したりすることができます。その後、彼はどのようにそれを行うことができるかを示しました。すべての要素を比較する方法を持っています。私は、すべての要素を同等かどうか比較する簡単な方法があると言いたいと思っています。したがって、 "...またはsameElements'を使用してください。私が返答した答えはその後削除されました。 –

+0

他の答えは実際にはより良い答えだと思います。 –

12

scala> import collection.JavaConverters._ 
import collection.JavaConverters._ 

scala> res0 == res1.asScala 
res2: Boolean = true 

asScalaだけのオリジナルList上のビューを返すこと、JavaConvertersドキュメントのasScalaBufferConverterのマニュアルを参照してください。

関連する問題