CodeGym /Blogue Java /Random-PT /Método Arrays.asList() em Java
John Squirrels
Nível 41
San Francisco

Método Arrays.asList() em Java

Publicado no grupo Random-PT
Muitos iniciantes confundem o conceito do método Arrays.asList() com a estrutura de dados ArrayList. Embora possam parecer e soar semelhantes, esses dois são totalmente diferentes quando se trata de implementação. Nesta postagem, abordaremos o uso básico do método Arrays.asList() e eliminaremos algumas confusões existentes relacionadas a ele.

Por que Arrays.asList () é usado?

Se você tiver um Array que precisa transformar em uma lista, então java.util.Arrays fornece um wrapper Arrays.asList() para atender a esse propósito. Em palavras simples, esse método usa um array como parâmetro e retorna uma lista. As principais partes da API da plataforma Java foram desenvolvidas antes da introdução da estrutura de coleções. Então, ocasionalmente, você pode precisar traduzir entre arrays tradicionais e coleções mais modernas. Esta função serve como um link entre Coleções e APIs baseadas em Array.Método Arrays.asList() em Java - 1

Exemplo

Dê uma olhada no seguinte exemplo:

import java.util.Arrays;
import java.util.HashSet;
import java.util.List;

public class ArraysAsListDemo {
    public static void main(String[] args) {

	String[] teamMembers = {"Amanda", "Loren", "Keith"};
      // using aslist() method
	List teamList = Arrays.asList(teamMembers);
	System.out.println("List : " + teamList);
		
	HashSet teamHashSet = new HashSet<>(Arrays.asList(teamMembers));
	System.out.println("HashSet : " + teamHashSet);
    }
}
Saída:
List : [Amanda, Loren, Keith] HashSet : [Keith, Loren, Amanda] // HashSet não mantém a ordem

Como Arrays.asList() e ArrayList são diferentes?

Quando você chama o método Arrays.asList() em um array, o objeto retornado não é um ArrayList (uma implementação de array redimensionável da interface List ). É um objeto de visualização com os métodos get() e set() que acessam o array subjacente. Todos os métodos que alteram o tamanho da matriz, como add() ou remove() do iterador associado, geram um UnsupportedOperationException . A razão pela qual o programa java compila com sucesso, mas dá uma exceção de tempo de execução é que, aparentemente, uma “Lista” é retornada como resultado deArrays.asList() . Onde todas as operações de adição/exclusão são permitidas. Mas como a estrutura de dados subjacente é um “array” não redimensionável , uma exceção é lançada no tempo de execução. Aqui está um trecho mostrando como ele se parece:

import java.util.Arrays;
import java.util.List;
public class ArraysAsListDemo {
   public static void main(String[] args) {
	Integer[] diceRoll = new Integer[6];	
      //using aslist() method
	List diceRollList = Arrays.asList(diceRoll);
	System.out.println(diceRollList);
	
	// using getters and setters to randomly access the list	
	diceRollList.set(5, 6);	
	diceRollList.set(0, 1);	
	System.out.println(diceRollList.get(5));
	System.out.println(diceRollList.get(1));

	System.out.println(diceRollList);
	
	diceRollList.add(7); // Add a new Integer to the list
    }
}
Saída:
[nulo, nulo, nulo, nulo, nulo, nulo] 6 nulo [1, nulo, nulo, nulo, nulo, 6] Exceção no encadeamento "principal" java.lang.UnsupportedOperationException em java.util.AbstractList.add(AbstractList. java:148) em java.util.AbstractList.add(AbstractList.java:108) em ArraysAsListDemo.main(ArraysAsListDemo.java:20)

Exemplos para usar o método asList()

A partir do Java SE 5.0, o método asList() é declarado para ter um número variável de argumentos. Em vez de passar um array, você também pode passar elementos individuais. Por exemplo:

import java.util.Arrays;
import java.util.List;
public class ArraysAsListDemo {
    public static void main(String[] args) {
	List seasons = Arrays.asList("winter", "summer", "spring", "fall");
	List odds = Arrays.asList(1, 3, 5, 7, 9);

	System.out.println(seasons);
	System.out.println(odds);
    }
}
Saída:
[inverno, verão, primavera, outono] [1, 3, 5, 7, 9]

Conclusão

Para usar Arrays.asList() você precisa ter em mente que é apenas um método wrapper para seu próprio utilitário. Não confunda com ArrayList e lembre-se que ele retorna uma “lista”. Inicialmente, você pode obter erros ao executar funções de adição/remoção, mas tudo desaparece com prática e compreensão consistentes. Então acesse seu IDE e tenha uma ótima experiência de aprendizado!
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION