Criamos um Set
como:
Set myset = new HashSet()
Como criamos um List
em Java?
java
list
collections
user93796
fonte
fonte
Respostas:
ou com genéricos ( Java 7 ou posterior)
ou com genéricos (versões antigas do java)
fonte
Além disso, se você deseja criar uma lista que contenha itens (embora seja de tamanho fixo):
fonte
Deixe-me resumir e adicionar algo:
JDK
Goiaba
Lista imutável
Lista imutável vazia
Lista de Personagens
Lista de Inteiros
fonte
Ints.asList
não cria uma lista imutável, mas uma lista de tamanho fixo, apoiada por um determinado conjunto de entradas (isto é, suportaList.set(int, Object)
). O segundo exemplo de "Lista imutável de caracteres" também não é imutável (eu removeria essa linha).No Java 8
Para criar uma lista não vazia de tamanho fixo (operações como adicionar, remover etc., não são suportadas):
Para criar uma lista mutável não vazia:
No Java 9
Usando um novo
List.of(...)
método estático de fábrica:No Java 10
Usando a inferência de tipo de variável local :
E siga as práticas recomendadas ...
Não use tipos brutos
Desde o Java 5, os genéricos fazem parte da linguagem - você deve usá-los:
Programa para interfaces
Por exemplo, programe para a
List
interface:Ao invés de:
fonte
Primeiro leia isto , depois leia isto e aquilo . 9 em cada 10 vezes, você usará uma dessas duas implementações.
De fato, basta ler o Guia do Sun para a estrutura de coleções .
fonte
ArrayList
. Se eu estiver trabalhando apenas com os fins de uma lista, é um deque (ou fila) e eu uso aArrayDeque
implementação. O motivo é que, embora as implementações baseadas em matriz possam desperdiçar alguma memória em slots vazios (quando não posso prever a capacidade necessária), para pequenas coleções, isso é comparável à sobrecarga de todas as instâncias de nó em uma lista vinculada ( ou deque). E, em troca, recebo acesso aleatório. Que benefício exclusivoLinkedList
oferece?fonte
Desde o Java 7, você tem inferência de tipo para criação de instância genérica , portanto, não há necessidade de duplicar parâmetros genéricos no lado direito da atribuição:
Uma lista de tamanho fixo pode ser definida como:
Para listas imutáveis, você pode usar a biblioteca Guava :
fonte
A lista é apenas uma interface, assim como definido .
Como o HashSet é uma implementação de um conjunto que possui determinadas propriedades em relação à adição / pesquisa / remoção de desempenho, ArrayList é a implementação simples de uma lista.
Se você olhar a documentação para as respectivas interfaces, encontrará "Todas as classes de implementação conhecidas" e poderá decidir qual é a mais adequada para suas necessidades.
As chances são de que seja ArrayList .
fonte
List
é uma interface comoSet
e temArrayList
eLinkedList
como implementações de uso geral .Podemos criar a lista como:
Também podemos criar uma lista de tamanho fixo como:
Quase sempre estaríamos usando
ArrayList
oposição àLinkedList
implementação:LinkedList
usa muito espaço para objetos e apresenta um desempenho ruim quando temos muitos elementos.LinkedList
requer tempo O (n) comparado a O (1) emArrayList
.A lista criada
Arrays.asList
acima não pode ser modificada estruturalmente, mas seus elementos ainda podem ser modificados.Java 8
Conforme o documento , o método
Collections.unmodifiableList
retorna uma visão inalterável da lista especificada. Podemos obtê-lo como:Java 9
Caso esteja usando o Java 9, então:
Java 10
Caso estejamos no Java 10, o método
Collectors.unmodifiableList
retornará uma instância da lista realmente não modificável introduzida no Java 9. Verifique esta resposta para obter mais informações sobre a diferença entreCollections.unmodifiableList
vsCollectors.unmodifiableList
no Java 10 .fonte
Às vezes - mas apenas muito raramente - em vez de uma nova ArrayList, você pode querer uma nova LinkedList. Comece com ArrayList e se você tiver problemas de desempenho e evidências de que a lista é o problema, e adicionar e excluir muita lista - e não antes - mude para uma LinkedList e veja se as coisas melhoram. Mas, em geral, fique com o ArrayList e tudo ficará bem.
fonte
Ou com genéricos
Obviamente, você pode substituir string por qualquer tipo de variável, como Inteiro, também.
fonte
Um exemplo:
Você pode olhar para o javadoc para List e encontrar todas as classes de implementação conhecidas da
List
interface que estão incluídas na API Java.fonte
Usando o Google Collections , você pode usar os seguintes métodos na classe Lists
Existem sobrecargas para a inicialização de varargs e a inicialização de um
Iterable<T>
.A vantagem desses métodos é que você não precisa especificar explicitamente o parâmetro genérico, como faria com o construtor - o compilador o inferirá do tipo de variável.
fonte
Você precisa importar
List
eArrayList
.fonte
Mais opções para fazer a mesma coisa com o Java 8, nem melhor nem pior, apenas diferente e, se você quiser fazer um trabalho extra com as listas, o Streams fornecerá mais alternativas (filtrar, mapear, reduzir etc.)
fonte
Com o Java 9, você pode fazer o seguinte para criar um imutável
List
:fonte
Como opção, você pode usar a inicialização entre chaves aqui:
fonte
Existem várias maneiras de criar um conjunto e uma lista. HashSet e ArrayList são apenas dois exemplos. Também é bastante comum o uso de genéricos com coleções atualmente. Eu sugiro que você dê uma olhada no que eles são
Esta é uma boa introdução para as coleções internas do java. http://java.sun.com/javase/6/docs/technotes/guides/collections/overview.html
fonte
É melhor usar genéricos, conforme sugerido abaixo:
Caso você use o LinkedList.
fonte
Usando o Eclipse Collections, você pode criar uma Lista como esta:
Se você deseja uma lista imutável:
Você pode evitar o encaixotamento automático usando listas primitivas. Veja como você criaria listas int:
Existem variantes para todas as 8 primitivas.
Nota: Sou um colaborador das Coleções Eclipse.
fonte
A seguir, algumas maneiras de criar listas.
Isso criará uma lista com tamanho fixo, não é possível adicionar / remover elementos, ele exibirá um
java.lang.UnsupportedOperationException
se você tentar fazer isso.A versão a seguir é uma lista simples onde você pode adicionar / remover qualquer número de elementos.
Isto é como criar um
LinkedList
em java. Se você precisar inserir / excluir com freqüência elementos na lista, use emLinkedList
vez deArrayList
fonte
Arrays.asList("Male", "Female")
.Tente o seguinte:
Ou:
fonte
Se você precisar de uma lista serializável e imutável com uma única entidade, poderá usar:
fonte
Como a declaração da lista de matrizes em java é como
Há várias maneiras de criar e inicializar a lista de matrizes em java.
fonte