объект. Как уже говорилось, это довольно уродливо и неуместно, и я предпочитаю решение Майка (о котором я не думал;)):

еделенных ситуациях мне нужно выселить самый старый элемент в JavaSet, Набор реализован с использованиемLinkedHashSet, что делает это простым: просто избавьтесь от первого элемента, возвращаемого итератором набора:

Set<Foo> mySet = new LinkedHashSet<Foo>();
// do stuff...
if (mySet.size() >= MAX_SET_SIZE)
{
    Iterator<Foo> iter = mySet.iterator();
    iter.next();
    iter.remove();
}

Это некрасиво: 3 строки, чтобы сделать то, что ямог сделать с 1 строкой, если я использовалSortedSet (по другим причинам,SortedSet здесь не вариант):

if (/*stuff*/)
{
    mySet.remove(mySet.first());
}

Так есть ли более чистый способ сделать это,без:

изменяяSet реализация илинаписание статического служебного метода?

Любые решения с использованиемгуайява в порядке.

Я полностью осознаю, что наборы не имеют внутреннего порядка. Я спрашиваю об удалении первой записи в соответствии с порядком итераций.

Ответы на вопрос(1)

Ваш ответ на вопрос