2017-09-15 2 views
3

Quel type de collection dans Java dois-je utiliser si je veux avoir quelque chose comme Size-limited queue that holds last N elements in Java.taille limitée Collection dans Java

J'ai une liste et je veux limiter la taille de la liste à "100". Donc si j'ajoute le 101 ème élément dans la liste, le premier élément devrait être supprimé automatiquement (FIFO). Par exemple:

List<Item> items = ??; 
items.add(item_1); 
... 
items.add(item_101); // implicitly calls items.remove(0); 
items.add(item_102); // implicitly calls items.remove(0); 
+1

Toute liste fera. Juste envelopper dans votre propre classe pour s'assurer que cet invariant est respecté. –

+3

Ai-je raté quelque chose? Qu'est-ce qui rend votre question différente de celle-ci, vous vous êtes même lié? – Holger

+0

Je me demande si java 8 ou 9 fournit une sorte de liste de taille limitée telle quelle. – nimo23

Répondre

3

Vous pouvez essayer d'écrire votre propre en 5 minutes en fait, voici très croquis sale Je mis en place:

static class LFUList<T> extends AbstractCollection<T> { 

    private final int size; 

    private List<T> list; 

    public Test(int size) { 
     super(); 
     this.size = size; 
     list = new ArrayList<>(size); 
    } 

    @Override 
    public Iterator<T> iterator() { 
     return list.iterator(); 
    } 

    @Override 
    public int size() { 
     return list.size(); 
    } 

    @Override 
    public boolean add(T e) { 
     if (list.size() == size) { 
      list.remove(0); 
     } 
     return list.add(e); 
    } 

    @Override 
    public boolean remove(Object o) { 
     return list.remove(o); 
    } 

} 
+0

ne java pas fournir un tel type d'une liste de taille limitée hors de la boîte? – nimo23

+0

@ nimo23 Je ne connais pas une telle fonctionnalité intégrée, non. – Eugene

+3

Je recommande fortement d'utiliser 'ArrayDeque' au lieu de' ArrayList', car le premier permet de supprimer au début avec la même efficacité que de supprimer de la fin. En revanche, 'ArrayList' doit copier le tableau entier lors de la suppression du premier élément. – Holger