it-swarm.com.ru

Как сравнить два массива в Scala?

val a: Array[Int] = Array(1,2,4,5)
val b: Array[Int] = Array(1,2,4,5)
a==b // false

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

62
Phil H

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

a.deep == b.deep

сделать глубокое сравнение массивов.

95
Moritz

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

Array(1,2,4,5).sameElements(Array(1,2,4,5))
87
sc_ray
  a.corresponds(b){_ == _}

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

18
The Archetypal Paul

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

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

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

5
jjuraszek