Retrait du "premier" objet d'un ensemble

Dans certaines situations, j'ai besoin d'expulser le plus ancien élément dans une Java Set. L'ensemble est mis en œuvre à l'aide d'un LinkedHashSetce qui le rend simple: il suffit de se débarrasser du premier élément retourné par l'ensemble de l'itérateur:

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

C'est moche: 3 lignes pour faire quelque chose que je pourrait faire avec 1 ligne si j'ai été en utilisant un SortedSet (pour d'autres raisons, un SortedSet n'est pas une option ici):

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

Donc, il y a une manière plus propre de le faire, sans:

  • la modification de la Set mise en œuvre, ou
  • écrit statique méthode utilitaire?

Tout en tirant parti des solutions Goyave sont beaux.


je suis pleinement conscient que les jeux ne sont pas inhérentes à la commande. Je pose la question sur la suppression de la première entrée tel que défini par l'itération de l'ordre.

source d'informationauteur Matt Ball