Anduvimos investigando en el mundo on line para traerte la solución para tu dilema, si continúas con alguna duda puedes dejarnos un comentario y te contestamos sin falta.
Solución:
Esto debería hacerlo si la memoria no me falla:
List fixed = Arrays.asList(new MyType[100]);
Una lista de Java es una colección de objetos… los elementos de una lista. El tamaño de la lista es el número de elementos en esa lista. Si desea que el tamaño sea fijo, eso significa que no puede agregar ni quitar elementos, porque agregar o quitar elementos violaría su restricción de “tamaño fijo”.
La forma más sencilla de implementar una lista de “tamaño fijo” (¡si eso es realmente lo que quiere!) es poner los elementos en un array y luego Arrays.asList(array)
para crear el contenedor de la lista. El contenedor le permitirá hacer operaciones como get
y set
pero el add
y remove
las operaciones generarán excepciones.
Y si desea crear un envoltorio de tamaño fijo para una lista existente, puede usar Apache commons FixedSizeList
clase. Pero tenga en cuenta que este envoltorio no puede evitar que otra cosa cambie el tamaño de la lista original, y si eso sucede, la lista envuelta presumiblemente reflejará esos cambios.
Por otro lado, si realmente desea un tipo de lista con un límite fijo (o límites) en su tamaño, deberá crear su propia clase List para implementar esto. Por ejemplo, podría crear una clase contenedora que implemente las comprobaciones pertinentes en los diversos add
/ addAll
y remove
/ removeAll
/ retainAll
operaciones. (Y en el iterador remove
métodos si son compatibles).
Entonces, ¿por qué el marco de Java Collections no los implementa? He aquí por qué lo creo:
- Los casos de uso que necesitan esto son raros.
- Los casos de uso donde esto es necesario, existen diferentes requisitos sobre qué hacer cuando una operación intenta romper los límites; por ejemplo, lanzar una excepción, ignorar la operación, descartar algún otro elemento para hacer espacio.
- Una implementación de lista con límites podría ser problemática para los métodos auxiliares; p.ej
Collections.sort
.
Sí,
La biblioteca Commons proporciona una función integrada FixedSizeList
que no apoya la add
, remove
y clear
métodos (pero el método set está permitido porque no modifica el List
tamaño). En otras palabras, si intenta llamar a uno de estos métodos, su lista aún conserva el mismo tamaño.
Para crear su lista de tamaño fijo, simplemente llame
List fixed = FixedSizeList.decorate(Arrays.asList(new YourType[100]));
Puedes usar unmodifiableList
si desea una vista no modificable de la lista especificada, o acceso de solo lectura a listas internas.
List unmodifiable = java.util.Collections.unmodifiableList(internalList);
Si te gusta el tema, eres capaz de dejar una reseña acerca de qué le añadirías a este artículo.