JavaRush /Java блог /Архив info.javarush /Как использовать классы - коллекции ArrayList, Vector и H...
ramhead
13 уровень

Как использовать классы - коллекции ArrayList, Vector и HashMap предоставляемые Java Collections Framework

Статья из группы Архив info.javarush
В этой статье, мы узнаем о трех важных классах — коллекций ArrayList, Vector и HashMap из Collections Framework и начнем использовать их в собственном коде. Как использовать классы - коллекции ArrayList, Vector и HashMap предоставляемые Java Collections Framework - 1Используя классы — коллекции ArrayList и Vector, мы можем хранить группу элементов, в виде простых объектов и манипулировать ими, посредством различных методов, доступных в этих классах. Классы ArrayList и Vector доступны из пакете java.util. Другой класс — коллекция доступный из пакета java.util, это HashMap, который позволяет хранить коллекцию отображений: ключ – значение. Это дает возможность получать нужное значение из коллекции, когда известен ключ. Давайте рассмотрим примеры с использованием этих классов – коллекций по очереди. Пример 1. В этом примере мы напишем простую программу с использованием класса — коллекции ArrayList Листинг 1. Код выполнения примера 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();
    }
// метод выводит позицию элемента ‘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);
    }
}
Запуск этой программы приведет к следующему выводу:

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
Давайте разберем пример приведенной программы, шаг за шагом. В этом примере, в первой же строке программы, мы импортируем класс — коллекцию ArrayList. Затем, мы по очереди инициализируем массив строк favouriteCharacters, содержащий имена людей и favouritelist — экземпляр коллекции ArrayList. Метод includeCharacters(args) может быть условно разделен на две части. В первой части метода, элементы добавляются из массива в коллекцию с помощью цикла. В этом случае, добавление элементов в ArrayList производится в том же самом порядке, в каком они расположены в массиве. Это происходит потому, что мы не определяем никаких позиций для элементов, которые добавляются в коллекцию. Но во второй части нашего метода, элементы добавляются с помощью индексации. В этом случае, добавление элементов в коллекцию производится по точно указанной позиции. При добавлении нового элемента в середину коллекции ArrayList, уже существующие в этой коллекции элементы, расположенные за указанной позицией вставки нового элемента, сдвигаются на следующие позиции от своих собственных, таким образом увеличивая размер коллекции. Когда мы взглянем на вывод вначале, мы увидим:

Total No of Characters in List: 10
Total No of Characters in Array: 8
Все потому, что помимо массива, имеющего 8 элементов, которые добавляются в ArrayList, мы явно добавляем еще 2 элемента, таким образом увеличивая размер коллекции до 10. Метод getCharacterPosition(args) принимает значение элемента(имя человека) и выводит позицию этого элемента в коллекции ArrayList. Если такого элемента нет в ArrayList, то выводится значение -1. Метод removeCharacter(args) удаляет указанное значение элемента(имя человека) из коллекции, принимая в качестве аргумента либо индекс этого элемент, либо сам элемент. В вышеприведенном коде, мы можем заметить, что размер нашей коллекции стал равен 8, вместо 10, по причине того, что мы удалили 2 элемента из коллекции. Если же размеры массива и коллекции совпадают, то метод возвращает следующие строки:

The element Harry cannot be removed 
The element Dumbledore cannot be removed
Выполнение метода removeCharacter(args) обусловлено только тем, что размер коллекции должен быть больше размера массива. Пример 2. В этом примере мы напишем простую программу с использованием класса — коллекции Vector Листинг 2. Код выполнения примере 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();
        }
}
Запуск этой программы приведет к следующему выводу:

The characters are Weasley
The characters are Potter
Вышеприведенный код, является всего лишь небольшим образцом, приведенным в качестве доказательства того, что нет большой разницы между коллекциями ArrayList и Vector. Коллекцией Vector можно манипулировать также, как и коллекцией ArrayList, используя те же методы. Пример 3. В этом примере мы напишем простую программу с использованием класса — коллекции HashMap Листинг 3. Код выполнения примера 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();
    }
}
Запуск этой программы приведет к следующему выводу:

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
Давайте разберем код программы приведенной выше, шаг за шагом. В этом примере программы, мы имеем массив строк , элементы которого — названия известных книг. Метод mapAuthors() создает отображение названий книг с их авторами. Ключами здесь являются названия книг, а значениями — авторы этих книг. Когда вызывается метод getBookList(), он выполняет итерацию массива Books и получает по очереди названия книг. Далее метод проверяет имеет ли какая-нибудь книга своего автора. Как мы можем заметить, если метод не может найти автора книги, то выводится сообщение not available. В противном случае выводится один за другим автор и его книга. Заключение: В приведенной статье, мы немного изучили классы — коллекции ArrayList, Vector, HashMap и попробовали использовать их в собственном коде. Оригинал статьи: How to use ArrayList, Vector and HashMap classes provided by Java Collections Framework
Комментарии (4)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Dmitry Уровень 26
11 октября 2022
в общем, если кто не понял, то вектор синхронизирован, а эррэй лист нет. Всё отличие
Василий Куцко Уровень 36
14 октября 2018
Автор статьи. Не путай людей. интерфейс мап не наследуется от интерфейса коллекций. а значит его нужно рассматривать отдельно от коллекций.
zagart Уровень 15
11 ноября 2015



Вот и вся разница между ArrayList и Vector.