Principais Métodos da Classe ArrayList
- O Java ArrayList, é, basicamente, um array dinâmico que encontramos no java.util — um pacote que contém uma grande variedade de recursos, como estruturas de coleções, modelos de data e hora, recursos para internacionalização, entre muitos outras facilidades para o desenvolvimento de aplicações em Java. Esses arrays redimensionáveis são muito úteis quando utilizados para implementações em que precisamos manipular listas.
- A dinamicidade do recurso possibilita à pessoa desenvolvedora a criação de coleções — arrays, classes e objetos — sem precisar se preocupar com o redimensionamento dos vetores. Caso algum haja necessidade de uma posição adicional em um array, o ArrayList realiza a operação de maneira autônoma. Fonte: (https://blog.betrybe.com/java/arraylist-java/#5)
Modelos de ArrayLists Imutáveis
List<Double> notas1 = Arrays.asList(7d, 8.5, 9.3, 5d, 7d, 0d, 3.6);
List<Double> notas2 = List.of(7d, 8.5, 9.3, 5d, 7d, 0d, 3.6);
Uma das Formas de Iniciar um ArrayList
List<Double> notas3 = new ArrayList<>();
notas3.add(7.0);
notas3.add(8.5);
notas3.add(9.3);
notas3.add(5d);
notas3.add(7d);
notas3.add(0d);
notas3.add(3.6);
Como Exibir a Posição de um Elemento
System.out.println("Exiba a posição da nota 5.0: " + notas3.indexOf(5d));
No código acima vemos que quando queremos exibir uma posição específica do ArrayList, é utilizado o método indexOf() . Dentro desse método é passado como parâmetro o valor do elemento que está na posição que desejo identificar, e com isso ele retornará um int, que é a posição.
Adicionar um valor em uma posição já existente
System.out.println("Adicione na lista a nota 8.0 na posição 4: ");
notas3.add(4, 8d);
No métodoadd()
serão passados 2 parâmetros, a posição desejável e o valor que será adicionado nelaadd(posição, valor do elemento)
.
Substituir o valor de um elemento
System.out.println("Substitua a nota 5.0 pela nota 6.0");
notas3.set(notas3.indexOf(5d), 6.0);
Neste caso será utilizado o métodoset()
e dentro dele será passado como parâmetro o métodoindexOf()
e o novo valor desejado. PeloindexOf()
será possível acessar a posição do elemento com o valor antigo e fazer a troca para o novo valor através doset()
.
Conferir se algum valor está na lista
System.out.println("Confira se a nota 5.0 está na lista: " + notas3.contains(5d));
Exibir todos os elementos na ordem em que foram informados
- No ArrayList ele já vai imprimir automaticamente na ordem em que os elementos foram adicionados.
- Para imprimir o ArrayList linha a linha, pode ser utilizado o forEach():
for (Double nota : notas3) System.out.println(nota);
Para cada nota (do tipo Double) do meu ArrayList chamado “notas3”, imprima em cada linha ela mesma(nota).
Iterator
A Classe Double implementa uma interface Comparable e é ela que faz a comparação e me diz quem é o menor número da minha lista, o maior, quem vem primeiro, quem vem depois. Tanto o Double, Integer, String, Long, todos eles implementam a interface Comparable.
Fazer a soma dos elementos de dentro da minha lista (Iterator)
Para que eu possa fazer a soma dos elementos de dentro da minha lista, preciso chamar o método iterator
e ir iterando dentro da minha list.
- Como criar uma variável do padrão iterator:
notas3.iterator();
//***ctrl + alt + v***
Iterator<Double> iterator = notas3.iterator();
//SOMA DOS VALORES
Iterator<Double> iterator = notas3.iterator();
Double soma = 0d;
while (iterator.hasNext()){
Double next = iterator.next();
soma += next;
}
System.out.println("Exiba a soma dos valores: " + soma);
Depois eu fiz um laçowhile()
com a condiçãoiterator.hasNext()
que quer dizer “iterator, tem o próximo elemento na lista?” se tiver, ele vai entrar na sentençawhile()
, vai pegar o elemento da lista (seguindo a ordem), vai colocar esse elemento dentro da variável next e vai somar ela com a variável soma que começou com 0. Vai seguir fazendo isso até que oiterator.hasNext()
seja false.
Média dos elementos do meu ArrayList (Iterator)
System.out.println("Exiba a média das notas: " + (soma/notas3.size()));
Após fazer a soma dos elementos do meu ArrayList usando o iterator, também é possível tirar a média dos mesmos.
size(): vai me retornar um int (inteiro) que significa a quantidade de elementos que eu tenho dentro do meu list.
Remoções
Remoção dos elementos de acordo com uma lógica (Iterator)
System.out.println("Remova as notas menores que 7 e exiba a lista: ");
Iterator<Double> iterator1 = notas3.iterator();
while (iterator1.hasNext()){
Double next = iterator1.next();
if (next < 7) iterator1.remove();
}
System.out.println(notas3);
“Enquanto tiver próximo elemento, eu vou pegar meu próximo elemento, vou colocá-lo na variável next e dizer: se meu próximo elemento for menor que 7, eu quero que ele seja removido da minha lista.”
Remoção do elemento da lista
System.out.println("Remova a nota 0: ");
notas3.remove(0d);
System.out.println(notas3);
Remoção do elemento de uma posição específica da lista
System.out.println("Remova o elemento da posição 0: ");
notas3.remove(0);
System.out.println(notas3);
Apagar toda a lista
System.out.println("Apague toda a lista");
notas3.clear();
System.out.println(notas3);
isEmpty()
- É um booleam, por exemplo, se a lista de notas3 estiver vazia, ele voltará um true, se não, voltará um false.
System.out.println("Confira se sua lista está vazia: " + notas3.isEmpty());
Espero ter ajudado!
Lembrando que só conseguiremos realmente entender com bastante prática. Bons estudos!!