Para que serve o Collections.singletonList()
Java? Eu entendo que ele retorna uma lista com um elemento. Por que eu gostaria de ter um método separado para fazer isso? Como a imutabilidade desempenha um papel aqui?
Existem casos de uso úteis especiais para esse método, em vez de apenas ser um método conveniente?
Respostas:
O javadoc diz o seguinte:
Você pergunta:
Principalmente como uma conveniência ... para poupar a necessidade de escrever uma sequência de instruções para:
Também pode ser um pouco mais rápido e / ou economizar um pouco de memória, mas é improvável que essas pequenas economias sejam significativas. (Um aplicativo que cria um grande número de listas de singleton é incomum, para dizer o mínimo.)
Faz parte da especificação do método; Veja acima.
Claramente, existem casos de uso em que é conveniente usar o
singletonList
método Mas não sei como você distinguiria (objetivamente) entre um caso de uso comum e um "especialmente útil" ...fonte
Aqui está uma visão sobre os métodos singleton:
fonte
Do javadoc
exemplo
Use-o quando o código espera uma lista somente leitura, mas você deseja passar apenas um elemento nela.
singletonList
é (thread) seguro e rápido.fonte
Para responder sua pergunta imutável:
Collections.singletonList
criará uma lista imutável. Uma lista imutável (também chamada de lista não modificável) não pode ter seu conteúdo alterado. Os métodos para adicionar ou remover itens lançarão exceções se você tentar alterar o conteúdo.Uma lista única contém apenas esse item e não pode ser alterada.
fonte
Se uma coleção Immutable / Singleton se referir àquela que possui apenas um objeto e que não é mais modificada, a mesma funcionalidade pode ser alcançada criando uma coleção "UnmodifiableCollection" com apenas um objeto. Como a mesma coleção pode ser alcançada com a coleção Unmodifiable com um objeto, para qual finalidade especial a coleção Singleton serve?
fonte
singletonList pode conter instância de qualquer objeto. O estado do objeto pode ser modificado.
Não podemos definir unmodifiableList como acima.
fonte