private HashMap<char [], String> initDictionary() {
HashMap<char [], String> d = new HashMap<char [], String>();
d.put("a".toCharArray(), "!\"#¤");
d.put("b".toCharArray(), "¤#\"!");
d.put("c".toCharArray(), "\"#¤%");
d.put("d".toCharArray(), "%¤#\"");
d.put("e".toCharArray(), "#¤%&");
d.put("f".toCharArray(), "&%¤#");
d.put("g".toCharArray(), "¤%&/");
d.put("h".toCharArray(), "/&%¤");
d.put("i".toCharArray(), "%&/(");
d.put("j".toCharArray(), "(/&%");
d.put("k".toCharArray(), "&/()");
d.put("l".toCharArray(), ")(/&");
d.put("m".toCharArray(), "/()=");
d.put("n".toCharArray(), "=)(/");
d.put("o".toCharArray(), "()=?");
d.put("p".toCharArray(), "?=)(");
d.put("q".toCharArray(), ")=?!");
d.put("r".toCharArray(), "!?=)");
d.put("s".toCharArray(), "=?!\"");
d.put("t".toCharArray(), "\"!?=");
d.put("u".toCharArray(), "?!\"#");
d.put("v".toCharArray(), "#\"!?");
d.put("w".toCharArray(), ";:*^");
d.put("x".toCharArray(), "^*:;");
d.put("y".toCharArray(), ":*^>");
d.put("z".toCharArray(), ">^*:");
// etc.
これは問題のビットです。 Arrayはequals()およびhashCode()メソッドをオーバーライドしないため、Javaでは配列をハッシュキーとして使用することはできません。
hashCodeは、探しているオブジェクトを含む正しいバケットを見つけるために使用され、equals()メソッドは実際のオブジェクトを比較します。 HashMapを使用するには、これらのメソッドの両方を適切な方法でオーバーライドする必要があります。これは、配列クラスが最終的であるため不可能です。だから、もしあなたが絶対にchar配列を使うことを主張するならば、あなたができる唯一のことは、ラッパークラスをchar配列を持つキーとして使うことです。このような
何か:今、あなたはMap<Key, String>
を持っているとString
またはchar[]
デバッガを使用して、失敗した値を確認しましたか? – Tudor
ええ、それは文字のように私は全体をスキップしてみましょうChArArray()変換 – BitPuffin
私はしなかった!私はデバッガの使い方を知らない。しかし、私は試してみることができます – BitPuffin