Как сравнить два массива в Scala? - PullRequest
63 голосов
/ 22 марта 2011
val a: Array[Int] = Array(1,2,4,5)
val b: Array[Int] = Array(1,2,4,5)
a==b // false

Есть ли способ сопоставления с образцом, чтобы увидеть, эквивалентны ли два массива (или последовательности)?

Ответы [ 4 ]

96 голосов
/ 22 марта 2011

Вам необходимо изменить последнюю строку на

a.deep == b.deep

, чтобы провести глубокое сравнение массивов.

88 голосов
/ 02 июня 2012

С Программирование Scala :

Array(1,2,4,5).sameElements(Array(1,2,4,5))
18 голосов
/ 22 марта 2011
  a.corresponds(b){_ == _}

Scaladoc: true, если обе последовательности имеют одинаковую длину и p(x, y) равно true для всех соответствующих элементов x из this упакованного массива и y из thatв противном случае false

5 голосов
/ 03 марта 2018

Для лучшей производительности вы должны использовать:

java.util.Arrays.equals(a, b)

Это очень быстро и не требует дополнительного выделения объектов. Array[T] в Scala совпадает с Object[] в Java. Та же история для примитивных значений, таких как Int, то есть java int.

...