Neste artigo, aprenderemos sobre três importantes classes de coleção ArrayList , Vector e HashMap do Collections Framework e começaremos a usá-las em nosso próprio código. Usando as classes coleção
ArrayList
e coleção Vector
, podemos armazenar um grupo de elementos como objetos simples e manipulá-los usando vários métodos disponíveis nessas classes. As aulas ArrayList
e Vector
estão disponíveis no pacote java.util
. Outra classe é uma coleção, disponível no pacote java.util
, HashMap
que permite armazenar uma coleção de mapeamentos de valores-chave. Isso permite obter o valor desejado da coleção quando a chave é conhecida. Vejamos exemplos usando essas classes de coleção, uma por uma. Exemplo 1. Neste exemplo, escreveremos um programa simples usando uma classe - a coleção ArrayList Listagem 1. Código de execução por exemplo 1
// подключаем класс
import java.util.ArrayList;
public class ArrayListExample {
static String[] favouriteCharacters = {"Harry", "Ron", "Hermione", "Snape", "Dumbledore", "Moody", "Riddle", "Fred"};
int i;
public ArrayList favouritelist = new ArrayList();
// метод добавляет элементы ‘favouriteCharacters’ в ‘favouritelist’
private void includeCharacters(String[]favouriteCharacters)
{
for (i = 0; i < favouriteCharacters.length; i++) {
// добавление элементов по одному из массива ‘favouriteCharacters’
favouritelist.add(favouriteCharacters[i]);
printCharacters(i);
}
// добавление элементов, посредством указания позиций
favouritelist.add(1, "george");
favouritelist.add(4, "Peter");
}
// метод выводит элемент ‘favouritelist’ по указанной позиции
private void printCharacters(int i) {
System.out.println("Character " + (i + 1) + ":" + favouritelist.get(i));
}
// метод выводит все элементы ‘favouritelist’
private void printCharacters() {
System.out.println("\n");
for(int i=0;i<favouritelist.size();i++){
System.out.println("Character" + (i + 1) + ":" + favouritelist.get(i));
} }
// метод возвращает размер коллекции ‘favouritelist’
private int sizeofCharactersList() {
System.out.println("\n");
System.out.println("Total No of Characters in Array:" + favouriteCharacters.length);
System.out.println("Total No of Characters in List:" + favouritelist.size());
return favouritelist.size();
}
// метод выводит позицию element ‘favouritelist’ по указанному имени
public void getCharacterPostion(String characterName) {
System.out.println("\n");
System.out.println("The position of the character\t" + characterName + "\tis\t" + favouritelist.indexOf(characterName));
}
// метод удаляет элемент ‘favouritelist’ по указанному имени
public void removeCharacter(String characterName) {
if(favouritelist.size()>favouriteCharacters.length){
favouritelist.remove(characterName);
}
else{
System.out.println("\n");
System.out.println("The element\t"+favouritelist.get(favouritelist.indexOf(characterName))+"\tcannot be removed");
}
}
// метод удаляет элемент ‘favouritelist’ по указанной позиции
public void removeCharacter(int i) {
if(favouritelist.size()>favouriteCharacters.length){
favouritelist.remove(i);
}
else{
System.out.println("The element\t"+favouritelist.get(i)+"\tcannot be removed");
}
}
public static void main(String args[]) {
ArrayListExample example = new ArrayListExample();
example.includeCharacters(favouriteCharacters);
example.printCharacters();
int size = example.sizeofCharactersList();
example.getCharacterPostion("Ron");
example.removeCharacter("Snape");
example.removeCharacter(2);
example.sizeofCharactersList();
example.removeCharacter("Harry");
example.removeCharacter(4);
}
}
A execução deste programa produzirá a seguinte saída:
Character 1:Harry
Character 2:Ron
Character 3:Hermione
Character 4:Snape
Character 5:Dumbledore
Character 6:Moody
Character 7:Riddle
Character 8:Fred
Character1:Harry
Character2:george
Character3:Ron
Character4:Hermione
Character5:Peter
Character6:Snape
Character7:Dumbledore
Character8:Moody
Character9:Riddle
Character10:Fred
Total No of Characters in Array:8
Total No of Characters in List:10
The position of the character Ron is 2
Total No of Characters in Array:8
Total No of Characters in List:8
The element Harry cannot be removed
The element Dumbledore cannot be removed
Vejamos o programa de exemplo fornecido, passo a passo. Neste exemplo, logo na primeira linha do programa, importamos a classe -coleção ArrayList
. Em seguida, nos revezamos na inicialização de um array de strings favouriteCharacters
contendo os nomes de pessoas e favouritelist
uma instância da coleção ArrayList
. O método includeCharacters(args)
pode ser dividido em duas partes. Na primeira parte do método, os elementos do array são adicionados à coleção por meio de um loop. Nesse caso, a adição de elementos ArrayList
é feita na mesma ordem em que estão localizados no array. Isso acontece porque não definimos nenhuma posição para os elementos que são adicionados à coleção. Mas na segunda parte do nosso método, os elementos são adicionados usando indexação. Neste caso, os elementos são adicionados à coleção na posição exata especificada. Quando um novo elemento é adicionado ao meio de uma coleção ArrayList
, os elementos já existentes nessa coleção que estão localizados além da posição de inserção especificada do novo elemento são deslocados para posições subsequentes das suas próprias, aumentando assim o tamanho da coleção. Quando olharmos primeiro para a saída, veremos:
Total No of Characters in List: 10
Total No of Characters in Array: 8
Isso porque além do array ter 8 elementos, que são somados ao ArrayList
, adicionamos explicitamente mais 2 elementos, aumentando assim o tamanho da coleção para 10. O método getCharacterPosition(args)
pega o valor de um elemento (nome da pessoa) e exibe a posição deste elemento na coleção ArrayList
. Se não existir tal elemento ArrayList
, o valor -1 será exibido. O método removeCharacter(args)
remove o valor do elemento especificado (nome da pessoa) da coleção, tomando como argumento o índice desse elemento ou o próprio elemento. No código acima, podemos notar que o tamanho da nossa coleção passou a ser 8 em vez de 10 devido ao fato de termos removido 2 elementos da coleção. Se os tamanhos do array e da coleção forem iguais, o método retornará as seguintes linhas:
The element Harry cannot be removed
The element Dumbledore cannot be removed
A execução do método removeCharacter(args)
está condicionada apenas ao fato de que o tamanho da coleção deve ser maior que o tamanho do array. Exemplo 2. Neste exemplo escreveremos um programa simples usando uma classe - uma coleção Vector
Listagem 2. Código de execução do exemplo 2
// подключаем класс
import java.util.Vector;
public class VectorExample {
Vector vector=new Vector();
public void addCharacterandPrint(){
vector.add("Weasley");
vector.add("Potter");
for(int i=0;i<vector.size();i++){
System.out.println("The characters are\t"+vector.get(i));
}
}
public static void main(String args[]){
VectorExample example=new VectorExample();
example.addCharacterandPrint();
}
}
A execução deste programa produzirá a seguinte saída:
The characters are Weasley
The characters are Potter
O código acima é apenas uma pequena amostra, fornecida como prova de que não há muita diferença entre coleções ArrayList
e Vector
. A coleção Vector
pode ser manipulada da mesma forma que a coleção ArrayList
, utilizando os mesmos métodos. Exemplo 3. Neste exemplo, escreveremos um programa simples usando a classe-coleção HashMap
Listagem 3. Código de execução para o Exemplo 3
// подключаем класс
import java.util.HashMap;
public class HashMapExample {
HashMap hashMap=new HashMap();
String Books[]={"Famous Five","Goosebumps","Robinson Crusueo","Nancy Drew","The Cell","The Davinci Code","Harry Potter"};
public void mapAuthors(){
hashMap.put("Famous Five","Enid Blyton");
hashMap.put("Goosebumps","R.L.Stine");
hashMap.put("Nancy Drew","Carolyn Keene");
hashMap.put("The Cell","Christopher Pike");
hashMap.put("The Davinci Code","Dan Brown");
hashMap.put("Harry Potter","J.K. Rowling");
}
public void getBookList(){
for(int i=0;i<Books.length;i++){
if(hashMap.containsKey(Books[i])){
System.out.println("Author"+(i+1)+":\t"+hashMap.get(Books[i])+"\t"+Books[i]);
}
else{
System.out.println("\nThe Imformation about the author of the book\t"+Books[i]+"\tis not available\n");
}
}
}
public static void main(String args[]){
HashMapExample hashMapExample=new HashMapExample();
hashMapExample.mapAuthors();
hashMapExample.getBookList();
}
}
A execução deste programa produzirá a seguinte saída:
Author1: Enid Blyton Famous Five
Author2: R.L.Stine Goosebumps
The Information about the author of the book Robinson Crusueo is not available
Author4: Carolyn Keene Nancy Drew
Author5: Christopher Pike The Cell
Author6: Dan Brown The Davinci Code
Author7: J.K. Rowling Harry Potter
Vejamos o código do programa acima, passo a passo. Neste programa de exemplo, temos um array de strings cujos elementos são nomes de livros famosos. O método mapAuthors()
cria uma exibição de títulos de livros com seus autores. As chaves aqui são os títulos dos livros, e os valores são os autores desses livros. Quando o método é chamado getBookList()
, ele percorre o array Books
e obtém os títulos dos livros um por um. A seguir, o método verifica se algum livro possui autor próprio. Como podemos ver, se o método não conseguir encontrar o autor do livro, a mensagem será exibida not available
. Caso contrário, o autor e seu livro serão exibidos um por um. Conclusão: Neste artigo estudamos um pouco sobre as classes - coleções ArrayList
, Vector
, HashMap
e tentamos utilizá-las em nosso próprio código. Artigo original: Como usar as classes ArrayList, Vector e HashMap fornecidas pelo Java Collections Framework
GO TO FULL VERSION