Saltar al contenido

Definir una lista de tamaño fijo en Java

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 setpero 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:

  1. Los casos de uso que necesitan esto son raros.
  2. 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.
  3. Una implementación de lista con límites podría ser problemática para los métodos auxiliares; p.ej Collections.sort.

,

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 Listtamañ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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *