web-dev-qa-db-fra.com

Comment comparer deux tableaux dans scala?

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

Existe-t-il un moyen de correspondance de motifs pour voir si deux tableaux (ou séquences) sont équivalents?

65
Phil H

Vous devez changer votre dernière ligne en

a.deep == b.deep

pour faire une comparaison approfondie des tableaux.

99
Moritz

De Programmation Scala :

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

Scaladoc: true si les deux séquences ont la même longueur et p(x, y) est true pour tous les éléments correspondants x du this tableau encapsulé et y de that, sinon false

18

Pour de meilleures performances, vous devez utiliser:

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

Ceci est très rapide et ne nécessite pas d'allocation d'objet supplémentaire. Array[T] in scala est identique à Object[] en Java. Même histoire pour les valeurs primitives comme Int qui est Java int.

6
jjuraszek