Nein, der localKeySet nicht sortiert und ist nur eine ganz normale Set. Wenn Sie die Reihenfolge beibehalten möchten, würde ich lieber Queue anstelle von TreeMap verwenden (außer Sie möchten es basierend auf einem anderen Parameter anstelle von TimeStamp of addition sortieren) und implementieren Sie einen localEntryListener, um diese Warteschlange zu steuern.
Eine weitere Option ist die Verwendung von TreeSet.
public class HazelcastNode {
private static Queue localEntryQueue = new LinkedList<>();
public HazelcastNode(){
HazelcastInstance hz = Hazelcast.newHazelcastInstance();
hz.getMap("hzMap").addLocalEntryListener(new MyLocalMapListner());
}
public static void main(String[] args){
HazelcastNode node = new HazelcastNode();
//Get the Head of the queue which will be the oldest local entry
HazelcastNode.localEntryQueue.peek();
}
private class MyLocalMapListner implements MapListener,EntryAddedListener,
EntryRemovedListener,
EntryUpdatedListener,
EntryEvictedListener,
EntryExpiredListener{
@Override
public void entryAdded(EntryEvent entryEvent) {
HazelcastNode.localEntryQueue.add(entryEvent.getKey());
}
@Override
public void entryEvicted(EntryEvent entryEvent) {
HazelcastNode.localEntryQueue.remove(entryEvent.getKey());
}
@Override
public void entryExpired(EntryEvent entryEvent) {
HazelcastNode.localEntryQueue.remove(entryEvent.getKey());
}
@Override
public void entryRemoved(EntryEvent entryEvent) {
HazelcastNode.localEntryQueue.remove(entryEvent.getKey());
}
@Override
public void entryUpdated(EntryEvent entryEvent) {
}
}
}
Danke für Ihre Antwort. Ich hatte anfangs ein ähnliches Design, aber mit einem TreeSet (Tippfehler in der Frage, jetzt korrigiert), da ich die Sortierung brauche. Ich denke jedoch über Optimierungsmöglichkeiten nach, wenn ich mit der bereits vorhandenen Datenstruktur arbeiten könnte. Die lokalen Karten sind vermutlich ConcurrentHashMaps, und ich hatte erwartet, dass Hazelcast eine Art Erweiterungsmechanismus bereitstellen würde, mit dem ich eine benutzerdefinierte Map "einstecken" könnte. –
Ich glaube nicht, dass Hazelcast es Ihnen ermöglicht, die benutzerdefinierte Map/Keyset-Implementierung zu plugintieren. Außerdem gibt Hazelcast nur eine Kopie der keySet/Werte zurück, nicht die tatsächlichen Referenzen. –