JavaRush /Java блог /Random UA /Як використовувати класи - колекції ArrayList, Vector і H...
ramhead
13 рівень

Як використовувати класи - колекції ArrayList, Vector і HashMap, що надаються Java Collections Framework

Стаття з групи Random UA
У цій статті ми дізнаємося про три важливі класи - колекції 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».
// подключаем класс
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 classs provided by Java Collections Framework
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ