Нет, localKeySet не сортируется и просто обычный набор. Если вы хотите сохранить заказ, я предпочел бы использовать Queue вместо TreeMap (если вы не хотите сортировать его на основе какого-либо другого параметра вместо TimeStamp добавления) и реализовать localEntryListener для управления этой очередью.
Другой вариант - использовать 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) {
}
}
}
Спасибо за ваш ответ. Сначала у меня был аналогичный дизайн, но с использованием TreeSet (опечатки в вопросе, теперь исправлены), так как мне нужна сортировка. Тем не менее, я думаю о способах оптимизации, если бы я мог работать с уже существующей структурой данных. Локальные карты ConcurrentHashMaps, я полагаю, и я ожидал, что Hazelcast может предоставить какой-то механизм расширения, благодаря которому я мог бы «подключать» настраиваемую карту. –
Я не думаю, что Hazelcast позволяет вам подключать пользовательскую реализацию map/keyset. Кроме того, Hazelcast возвращает только копию keySet/values, а не фактические ссылки. –