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になる。
コメントを残す