Ich würde eine Wrapper-Klasse um eine ArrayList
schreiben, und in den Methoden add
und addAll
würde ich nach der Größe der Liste suchen, bevor ich neue Elemente hinzufüge. Wenn Sie die maximale Größe erreicht haben, können Sie eine Ausnahme auslösen (oder nichts tun, je nachdem, was Sie wirklich in Ihrem Code tun möchten).
Hier ist ein kurzes Beispiel:
%Vor% Arrays.asList (T. ..) Returns a fixed-size list backed by the specified array
Implementieren Sie einfach Ihre eigenen. Sie könnten einen proxybasierten Ansatz verwenden. Definieren Sie Ihre eigene Liste, die von einem ArrayList
unterstützt wird. Machen Sie die interne Liste privat. Implementiere auch ein einfaches limit
-Feld, das einen Standard hat und auch über einen Konstruktor gesetzt werden kann.
Ihre Liste wird List
implementieren, und für jede Methode, die die interne Liste ändert, erhöht und dekrementiert die Zählung entsprechend. Wenn die Größe das Limit überschreitet, werfen Sie eine Ausnahme aus. Etwas wie
Sie müssen an den Generika arbeiten und daran denken, die Fälle zu unterstützen, in denen mehrere Dinge gleichzeitig hinzugefügt werden. addAll
.
Ich werde wahrscheinlich gebrannt werden, aber Sie können auch eine ArrayBlockingQueue verwenden dafür. Dies bietet den Vorteil, dass Sie regelmäßig Collection -Methoden verwenden können.