apache.commons.ArrayUtilsでバイト配列の比較

Javaで困った時はapache.commonsに大概便利クラスがあるらしい。
で、byte配列の比較でJavaの標準だとオブジェクトの比較になっちゃうからどうしたもんかと思ってたら、
ArrayUtilsに便利なメソッドがありました。
まず、Javaの標準では、

        String hash = "00000000";
        byte[] hoge = hash.getBytes();
        byte[] mosa = "00000000".getBytes();
        if(hoge == mosa) {
                System.out.println("equals");
        }else{
                System.out.println("not equals");
        }

だと、オブジェクトの比較になっちゃって結果はnot equalsになる。
これを

        String hash = "00000000";
        byte[] hoge = hash.getBytes();
        byte[] mosa = "00000000".getBytes();
        if (ArrayUtils.isEquals(hoge, mosa)) {
            System.out.println("equals");
        }else{
            System.out.println("not equals");
        }

というように、ArrayUtils.isEqualsに差し替えると、内容の比較になるので、結果はequalsになる。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です