あなたが学問的な練習としてこれをやっていない限り、
java.util.Arrays.equals(b1, b2)
説明:
指定された2つのバイト配列が1に等しい場合にtrueを返します。
別の2つの配列は、両方の配列に
同じ数の要素、および対応するすべての要素のペア
2つのアレイは等しい。言い換えれば、2つの配列は等しい
同じ要素を同じ順序で含みます。また、2つのアレイ
両方がnullの場合、参照は等しいと見なされます。
私はこれが「Javaスタイル」であることを認めます:-)
AssertionErrorsを投げているので、他のすべてのものを削除することができます:
def assertArray(b1: Array[Byte], b2: Array[Byte]): Unit = {
if (b1 == b2) return;
if (b1 == null || b2 == null) throw new AssertionError("b1 is null while b2 is not, vice versa")
if (b1.length != b2.length) throw new AssertionError("b1.length != b2.length")
for (i <- b1.indices) {
if (b1(i) != b2(i)) throw new AssertionError("b1(%d) != b2(%d)".format(i, i))
}
}
もし私が疑うように、実際にJUnitテスト(これはassertArray)内でこれを使用しているのであれば、私はしばしば行うトリックを使用して配列の文字列表現を比較します:
def assertArray2(b1: Array[Byte], b2: Array[Byte]): Unit = {
assertEquals(toString(b1), toString(b2))
}
def toString(b: Array[Byte]) = if (b == null) "null" else java.util.Arrays.asList(b:_*).toString
違いがどこにあるのか、同じ結果(AssertionError)を与えるでしょう。