Я работаю над приложением, в котором мне нужна фиксированная длина для HashMap.Первоначально хеш-карта была ограничена в зависимости от размера, поэтому для этого я использовал метод removeEldestEntry LinkedHashMap.
Код:
public class FixedLengthHashMap<K,V> extends LinkedHashMap<K,V> {
long max_length;
public FixedLengthHashMap(long max_length){
this.max_length = max_length;
}
protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {
return this.size() > max_length;
}
}
Но теперь мне нужно сохранять записи в этом HashMap в зависимости от времени.Например, если размер хеш-карты равен двум неделям, в хеш-карту должны быть вставлены записи в течение первых 14 дней, а при вставке новой записи на 15-й день следует удалить записи 1-го дня.И на 16-й день все записи второго слова должны быть удалены и так далее.
Я снова попробовал метод removeEldestEntry, как показано ниже:
public class FixedTimeHashMap<K,V> extends LinkedHashMap<K,V> {
LocalDateTime start;
public FixedTimeHashMap(){
this.start = LocalDateTime.now();
}
protected boolean removeEldestEntry(Map.Entry<K, V> eldest)
{
LocalDateTime current= LocalDateTime.now();
Long diff = ChronoUnit.SECONDS.between(start, current);
if(diff>60*60*24*14)
return true;
else
return false;
}
}
Но это удалит только одну запись для каждой вставки после 14-го дня.Я должен удалить все записи 1-го дня, когда новая запись вставлена на 15-й день.
Если вы можете дать несколько советов или предложений, это будет очень полезно.Заранее спасибо.