@gudenau I don't know of anything time-based, but java.lang.ref.SoftReference lets you to build data structures that will hold objects until there's memory pressure. I think Guava has a SoftHashMap implementation.
What's the use case for you?
You can add a removal listener to the cache, which isn't mentioned in that answer but is in the javadoc.
If it's singly linked then you should insert at the tail so you can invalidate items by starting at the head and going forwards until you hit a valid one.
Although if you don't need to do any special processing to invalidate individual entries then you should insert at the head and just drop the entire tail when you read the first invalid item.
The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!