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