¿Para qué sirve Collections.singletonList()
Java? Entiendo que devuelve una lista con un elemento. ¿Por qué querría tener un método separado para hacer eso? ¿Cómo juega aquí la inmutabilidad?
¿Hay algún caso de uso útil especial para este método en lugar de ser simplemente un método conveniente?
Respuestas:
El javadoc dice esto:
Usted pregunta:
Principalmente como una conveniencia ... para ahorrarle tener que escribir una secuencia de declaraciones para:
También puede ser un poco más rápido y / o ahorrar un poco de memoria, pero es poco probable que estos pequeños ahorros sean significativos. (Una aplicación que crea grandes cantidades de listas singleton es inusual por decir lo menos).
Es parte de la especificación del método; véase más arriba.
Claramente, hay casos de uso en los que es conveniente usar el
singletonList
método. Pero no sé cómo distinguirías (objetivamente) entre un caso de uso ordinario y uno "especialmente útil" ...fuente
Aquí hay una vista sobre los métodos singleton:
fuente
Del javadoc
ejemplo
Úselo cuando el código espera una lista de solo lectura, pero solo desea pasar un elemento en ella.
singletonList
es (thread-) seguro y rápido.fuente
Para responder a su pregunta inmutable:
Collections.singletonList
creará una lista inmutable. Una Lista inmutable (también conocida como Lista no modificable) no puede cambiar su contenido. Los métodos para agregar o eliminar elementos generarán excepciones si intenta alterar el contenido.Una lista singleton contiene solo ese elemento y no puede modificarse.
fuente
Si una colección Immutable / Singleton se refiere a la que tiene un solo objeto y que no se modifica más, entonces se puede lograr la misma funcionalidad haciendo una colección "UnmodifiableCollection" que tenga un solo objeto. Dado que la Colección Unmodifiable puede lograr la misma funcionalidad con un objeto, ¿para qué propósito especial sirve la Colección Singleton?
fuente
singletonList puede contener instancias de cualquier objeto. El estado del objeto puede ser modificado.
No podemos definir una Lista no modificable como la anterior.
fuente