Java time-to-live collection
You remove the items when the iterator is requested. Are you sure that this is right in your use case? Imagine the user puts an item in with a lifetime of 20 ms, requests the iterator, gets it with this one element and uses the iterator later. Theoretically, the item would be dead then. You should mention this behavior of the iterator method. 

Additionally, the performance of the iterator construction depends on the number of dead entities inside the collection -> mention it.