Another alternative is my ExpiringMap (I'm the author), which supports variable entry expiration:
Map<String, String> map = ExpiringMap.builder().variableExpiration().build();map.put("foo", "bar", ExpirationPolicy.ACCESSED, 5, TimeUnit.MINUTES);map.put("baz", "pez", ExpirationPolicy.CREATED, 10, TimeUnit.MINUTES);