Lista Java é uma coleção ordenada. Lista Java é uma interface que estende a interface Collection. Lista Java fornece controle sobre a posição onde você pode inserir um elemento. Você pode acessar elementos pelo seu índice e também pesquisar elementos na lista.
Lista Java
Alguns dos pontos importantes sobre Lista Java são;
- A interface Lista Java é um membro do Framework de Coleções Java.
- A Lista permite adicionar elementos duplicados.
- A Lista permite ter elementos ‘null’.
- A interface Lista possui muitos métodos padrão no Java 8, como replaceAll, sort e spliterator.
- Os índices da Lista começam em 0, assim como arrays.
- A Lista suporta Genéricos e devemos usá-la sempre que possível. Usar Genéricos com Lista evitará ClassCastException em tempo de execução.
Diagrama de Classe Lista Java
A interface List do Java estende a interface Collection. A interface Collection estende a interface Iterable. Algumas das implementações de List mais usadas são ArrayList, LinkedList, Vector, Stack, CopyOnWriteArrayList. AbstractList fornece uma implementação esquelética da interface List para reduzir o esforço na implementação de List.
Métodos da Lista Java
Alguns dos métodos úteis da List Java são;
- int size(): para obter o número de elementos na lista.
- boolean isEmpty(): para verificar se a lista está vazia ou não.
- boolean contains(Object o): Retorna true se esta lista contiver o elemento especificado.
- Iterator<E> iterator(): Retorna um iterador sobre os elementos nesta lista na sequência adequada.
- Object[] toArray(): Retorna uma matriz contendo todos os elementos nesta lista na sequência apropriada
- boolean add(E e): Anexa o elemento especificado ao final desta lista.
- boolean remove(Object o): Remove a primeira ocorrência do elemento especificado desta lista.
- boolean reterTodos(Collection<?> c): Mantém apenas os elementos nesta lista que estão contidos na coleção especificada.
- void limpar(): Remove todos os elementos da lista.
- E get(int index): Returns the element at the specified position in the list.
- E set(int index, E element): Replaces the element at the specified position in the list with the specified element.
- ListIterator<E> iteradorLista(): Retorna um iterador de lista sobre os elementos na lista.
- List<E> subLista(int fromIndex, int toIndex): Retorna uma visão da parte desta lista entre o fromIndex especificado, inclusivo, e o toIndex, exclusivo. A lista retornada é suportada por esta lista, então mudanças não estruturais na lista retornada são refletidas nesta lista, e vice-versa.
Alguns dos métodos padrão adicionados à Lista no Java 8 são;
- padrão void substituirTudo(UnaryOperator<E> operador): Substitui cada elemento desta lista pelo resultado da aplicação do operador a esse elemento.
- padrão void ordenar(Comparator<super E> c): Ordena esta lista de acordo com a ordem induzida pelo Comparator especificado.
- padrão Spliterator<E> spliterator(): Cria um Spliterator sobre os elementos nesta lista.
Array Java para Lista
Podemos usar a classe Arrays para obter a visualização do array como lista. No entanto, não poderemos fazer nenhuma modificação estrutural na lista; isso resultará em java.lang.UnsupportedOperationException. Portanto, a melhor maneira é usar o loop for para criar a lista iterando sobre o array. Abaixo está um exemplo simples mostrando como converter um array Java em lista corretamente.
package com.journaldev.examples;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ArrayToList {
public static void main(String[] args) {
String[] vowels = {"a","e","i","o","u"};
List vowelsList = Arrays.asList(vowels);
System.out.println(vowelsList);
/**
* List is backed by array, we can't do structural modification
* Both of the below statements will throw java.lang.UnsupportedOperationException
*/
//vowelsList.remove("e");
//vowelsList.clear();
//usando loop for para copiar elementos do array para a lista, seguro para modificação da lista
List myList = new ArrayList<>();
for(String s : vowels){
myList.add(s);
}
System.out.println(myList);
myList.clear();
}
}
Escolha qualquer um dos métodos acima com base nos requisitos do seu projeto.
Java Lista para Array
A simple example showing the correct way to convert a list to array.
package com.journaldev.examples;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ListToArray {
public static void main(String[] args) {
List letters = new ArrayList();
//exemplo de adição
letters.add("A");
letters.add("B");
letters.add("C");
//converter lista para array
String[] strArray = new String[letters.size()];
strArray = letters.toArray(strArray);
System.out.println(Arrays.toString(strArray)); //will print "[A, B, C]"
}
}
Ordenação de Lista Java
Há duas maneiras de ordenar uma lista. Podemos usar a classe Collections para ordenação natural ou podemos usar o método List sort() e usar nosso próprio Comparator para ordenação. Abaixo está um exemplo simples para ordenação de lista Java.
package com.journaldev.examples;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
public class ListSortExample {
public static void main(String[] args) {
List ints = new ArrayList<>();
Random random = new Random();
for (int i = 0; i < 10; i++) ints.add(random.nextInt(1000));
//ordenando naturalmente usando a classe Collections
Collections.sort(ints);
System.out.println("Natural Sorting: "+ints);
//Minha ordenação personalizada, ordem reversa
ints.sort((o1,o2) -> {return (o2-o1);});
System.out.println("Reverse Sorting: "+ints);
}
}
A sample output is given below. Since I am using Random for generating list elements, it will be different every time.
Natural Sorting: [119, 273, 388, 450, 519, 672, 687, 801, 812, 939]
Reverse Sorting: [939, 812, 801, 687, 672, 519, 450, 388, 273, 119]
Operações Comuns em Lista Java
As operações mais comuns realizadas em listas Java são adicionar, remover, definir, limpar, tamanho etc. Abaixo está um exemplo simples de lista Java mostrando o uso comum dos métodos.
package com.journaldev.examples;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ListExample {
public static void main(String args[]) {
List vowels= new ArrayList();
//exemplo de adição
vowels.add("A");
vowels.add("I");
//vamos inserir E entre A e I
vowels.add(1,"E");
System.out.println(vowels);
List list = new ArrayList();
list.add("O");list.add("U");
//anexando elementos da lista às letras
vowels.addAll(list);
System.out.println(vowels);
//exemplo de limpeza para esvaziar a lista
list.clear();
//exemplo de tamanho
System.out.println("letters list size = "+vowels.size());
//exemplo de definição
vowels.set(2, "E");
System.out.println(vowels);
//exemplo de subLista
vowels.clear();vowels.add("E"); vowels.add("E");vowels.add("I"); vowels.add("O");
list = vowels.subList(0, 2);
System.out.println("letters = "+vowels+", list = "+list);
vowels.set(0, "A");
System.out.println("letters = "+vowels+", list = "+list);
list.add("U");
System.out.println("letters = "+vowels+", list = "+list);
}
}
A saída do exemplo de programa de lista Java acima é;
[A, E, I]
[A, E, I, O, U]
letters list size = 5
[A, E, E, O, U]
letters = [E, E, I, O], list = [E, E]
letters = [A, E, I, O], list = [A, E]
letters = [A, E, U, I, O], list = [A, E, U]
Iterador de Lista Java
Aqui está um exemplo simples mostrando como iterar sobre uma lista em Java.
package com.journaldev.examples;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ListIteratorExample {
public static void main(String[] args) {
List list = new ArrayList<>();
for(int i=0; i<5; i++) list.add(i);
Iterator iterator = list.iterator();
//iteração simples
while(iterator.hasNext()){
int i = (int) iterator.next();
System.out.print(i + ", ");
}
System.out.println("\n"+list);
//modificação da lista usando iterador
iterator = list.iterator();
while(iterator.hasNext()){
int x = (int) iterator.next();
if(x%2 ==0) iterator.remove();
}
System.out.println(list);
//alterando a estrutura da lista enquanto itera
iterator = list.iterator();
while(iterator.hasNext()){
int x = (int) iterator.next(); //ConcurrentModificationException here
if(x==1) list.add(10);
}
}
}
A saída do programa de iterador de lista Java acima é;
0, 1, 2, 3, 4,
[0, 1, 2, 3, 4]
[1, 3]
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901)
at java.util.ArrayList$Itr.next(ArrayList.java:851)
at com.journaldev.examples.ListIteratorExample.main(ListIteratorExample.java:34)
Isso é tudo para um breve resumo sobre Listas em Java. Espero que esses exemplos de Listas Java ajudem você a começar a programar com coleções de Listas.
Source:
https://www.digitalocean.com/community/tutorials/java-list