I map.containsKey()が明確に動作しない、次のマップ定義があります:私はクロニクル地図2.4.17を使用し、それがに移行するにはあまりにも難しいクロニクル地図2のcontainsKeyは動作しません
ChronicleMapBuilder<String, String> cmBuilder = ChronicleMapBuilder.of(String.class, String.class);
cmBuilder.constantKeySizeBySample("abcde")
.averageValueSize(128)
.entries(1024)
.keyMarshaller(new MyStringMarshaller())
.valueMarshaller(new MyStringMarshaller());
Map myMap = cmBuilder.createPersistedTo(new File("/tmp/test-map"));
myMap.put("abc", "123");
System.out.println(myMap.containsKey("abc")); // prints false
...
public static class MyStringMarshaller implements BytesMarshaller<String> {
@Override
public void write(Bytes bytes, String str) {
bytes.writeUTF(str);
}
@Override
public String read(Bytes bytes) {
return read(bytes, null);
}
@Override
public String read(Bytes bytes, String str) {
return bytes.readUTF();
}
}
を私のプロジェクトのバージョン3。
キー "abc"でエントリを入力した直後のcontainsKey()メソッドは、キー "abc"に対してfalseを返します。なぜうまくいかないのか分かりません。 String型は、正しいhashCode()メソッドを持つデフォルトのJava文字列です。
まだ動作しません:http://pastebin.com/4ivAH2dK I何かを見逃しています... – Soid
あなたがしたいことがあれば、私はあなたに見せることができるマップを作るための簡単な方法があるので、あなたはChronicleMapを作成しようとしていますか?別の理由でKeyMarshallerを使用する –
私はconstantKeySizeBySample()およびaverageValueSize()を使用しないと、それが機能することを発見しました。これは、CM 2.xの1年間公開されているこの問題に関連する可能性があります。https://github.com/OpenHFT/Chronicle-Map/issues/86 – Soid