inicialização da lista Java em uma linha
visão geral
neste tutorial rápido, nós”ll investigar como inicializar uma lista usando uma linha.
leitura adicional:
Colecções.emptyList () vs. New List Instance
Guia para o Java ArrayList
Criar a Partir de um Array
podemos criar uma Lista a partir de uma matriz. E graças aos literais array, podemos inicializá-los em uma linha:
podemos confiar no mecanismo varargs para lidar com a criação de array. Com isso, podemos escrever um código mais conciso e legível:
a instância de resultado deste código implementa a interface da lista, mas é”t A java.util.,Listado ou LinkedList. Em vez disso, é uma lista apoiada pela matriz original, que tem duas implicações que nós”ll olhar no resto desta seção.
embora o nome da classe”S seja ArrayList, ele” está no java.util.Pacote Arrays.
2, 1. Tamanho fixo
a instância de resultado de Arrays.asList terá um tamanho fixo:
2.2. Compartilhado de Referência
A matriz original e a lista de compartilhar as mesmas referências para os objetos:
Criar a Partir de uma Sequência (Java 8)
podemos facilmente converter um Fluxo em qualquer tipo de Coleção.,
portanto, com os métodos de fábrica para fluxos, podemos criar e inicializar listas em uma linha:
devemos notar aqui que coletores.toList () não garante a implementação exata da lista devolvida.
não há nenhum contrato geral sobre a mutabilidade, serializabilidade ou segurança de thread da instância devolvida. Então, o nosso código não deve depender de nenhuma destas propriedades.
algumas fontes destacam esse fluxo.de(…).coletar (…) pode ter uma maior pegada de memória e desempenho do que Arrays.asList ()., Mas em quase todos os casos, é uma micro-otimização que há pouca diferença.
Métodos de Fábrica (Java 9)
JDK 9 apresenta vários conveniente métodos de fábrica para coleções:
Um detalhe importante é que as instâncias retornadas são imutáveis. Além disso, os métodos de fábrica têm várias vantagens em eficiência espacial e segurança de rosca.
Este tópico é explorado mais neste artigo.,
inicialização de dupla-Brace
em vários lugares, podemos encontrar um método chamado inicialização de dupla-brace, que se parece com este:
o nome “inicialização de dupla-brace” é bastante enganador. Enquanto a sintaxe pode parecer compacta e elegante, ele esconde perigosamente o que está acontecendo sob o capô.
não existe na verdade um elemento de sintaxe de dupla-brace em Java; estes são dois blocos formatados intencionalmente desta forma.com os suspensórios exteriores, declaramos uma classe interna anônima que será uma subclasse do ArrayList., Podemos declarar os detalhes da nossa subclasse dentro destes aparelhos.
Como de costume, podemos usar blocos de inicialização de instância, e é daí que vem o par interno de suspensórios.
a brevidade desta sintaxe é tentadora. No entanto, é considerado um anti-padrão.
para ler mais sobre inicialização de dupla brace, dê uma olhada no nosso artigo aqui.
conclusão
Java moderno oferece várias opções para criar uma coleção em uma linha. O método que escolhemos depende quase inteiramente da preferência pessoal e não do raciocínio técnico.,
um takeaway importante é que, embora pareça gracioso, o anti-padrão de inicialização de classe interna anônima (também conhecido como dupla brace) tem muitos efeitos colaterais negativos.
Como sempre, o código está disponível no GitHub.
Começar com Mola 5 e Primavera de Inicialização 2, através do Aprender a Primavera curso:
>> confira O CURSO