2012-04-12 4 views
15

스칼라 목록을 Java 목록과 어떻게 비교할 수 있습니까?스칼라 목록과 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 

비교를 위해 스칼라 목록과 Java 목록을 모두 사용할 수있는 정적 도우미 메서드가 있습니까? 아니면 두 종류의리스트에 "게으른 래퍼 (lazy wrapper)"가 있습니까? ==을 통해 직접 비교할 수 있습니까?

답변

17

... 또는 sameElements을 사용하십시오.

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

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

자바 컬렉션이 스칼라 버퍼 ('-Xprint : typer'를 사용할 때 보여지는)에 싸여 있음을주의하십시오. 이것은 실제로 실행 된 코드입니다 :'res0.sameElements (asScalaBuffer (res1)) ' – robinst

+0

제 대답은 누군가 다른 사람의 대답에 대한 답이 될 수 밖에 없었던 것 같습니다. 그는 스칼라에 대한 암묵적인 변환 수집 한 다음 모든 요소를 ​​하나씩 비교하거나 비교하십시오. 그런 다음 어떻게 할 수 있는지 보여주기 위해 진행되었습니다. 모든 요소를 ​​비교하는 방법을 사용하십시오. 나는 모든 요소를 ​​동등하게 비교하는 더 쉬운 방법이 있다고 말하고 싶다. "... 또는 use 'sameElements'. 내가 대답 한 대답은 그 후에 삭제되었습니다. –

+0

다른 답변은 실제로 더 좋은 대답이라고 생각합니다. –

12

당신은 이것에 대한 JavaConverters을 사용할 수 있습니다 다음 asScala는 원래 List에 대한 뷰를 반환

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

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

주, JavaConverters 문서에 asScalaBufferConverter의 설명서를 참조하십시오.

관련 문제