В определенных ситуациях мне нужно удалить самый старый элемент в Java Set
. Набор реализован с помощью LinkedHashSet
, что упрощает задачу: просто избавьтесь от первого элемента, возвращаемого итератором набора:
Set mySet = new LinkedHashSet();
// do stuff...
if (mySet.size() >= MAX_SET_SIZE)
{
Iterator iter = mySet.iterator();
iter.next();
iter.remove();
}
Это уродливо: 3 строки, чтобы сделать то, что я мог сделайте с одной строкой, если бы я использовал SortedSet
(по другим причинам SortedSet
здесь не подходит):
if (/*stuff*/)
{
mySet.remove(mySet.first());
}
Есть ли более чистый способ сделать это , без:
Set
, или Любые решения, использующие Guava , подходят.
Я полностью осознаю, что наборы не имеют внутреннего упорядочения. Я прошу удалить первую запись в соответствии с порядком итераций.