JavaRush /Blog Java /Random-PL /Jak korzystać z klas kolekcji ArrayList, Vector i HashMap...
ramhead
Poziom 13

Jak korzystać z klas kolekcji ArrayList, Vector i HashMap dostarczonych przez Java Collections Framework

Opublikowano w grupie Random-PL
W tym artykule poznamy trzy ważne klasy kolekcji ArrayList , Vector i HashMap z Collections Framework i zaczniemy używać ich w naszym własnym kodzie. Jak korzystać z klas kolekcji ArrayList, Vector i HashMap dostarczonych przez Java Collections Framework - 1Korzystając z klas kolekcji ArrayListi kolekcji Vector, możemy przechowywać grupę elementów w postaci prostych obiektów i manipulować nimi za pomocą różnych metod dostępnych w tych klasach. Zajęcia ArrayListi Vectordostępne są w pakiecie java.util. Kolejną klasą jest kolekcja dostępna z pakietu java.util, HashMapktóra umożliwia przechowywanie kolekcji odwzorowań klucz-wartość. Dzięki temu możliwe jest uzyskanie żądanej wartości ze zbioru, gdy znany jest klucz. Przyjrzyjmy się przykładom użycia tych klas kolekcji, jeden po drugim. Przykład 1. W tym przykładzie napiszemy prosty program wykorzystujący klasę - kolekcję ArrayList Listing 1. Kod wykonania dla przykładu 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);
    }
}
Uruchomienie tego programu da następujące dane wyjściowe:
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
Przyjrzyjmy się przykładowemu programowi, krok po kroku. W tym przykładzie w pierwszej linii programu importujemy klasę - kolekcję ArrayList. Następnie na zmianę inicjujemy tablicę ciągów znaków favouriteCharacterszawierającą nazwiska osób i favouritelistinstancję kolekcji ArrayList. Metodę includeCharacters(args)można podzielić na dwie części. W pierwszej części metody elementy z tablicy dodawane są do kolekcji za pomocą pętli. W tym przypadku dodawanie elementów do ArrayListodbywa się w tej samej kolejności, w jakiej znajdują się w tablicy. Dzieje się tak dlatego, że nie definiujemy żadnych pozycji dla elementów dodawanych do kolekcji. Ale w drugiej części naszej metody elementy dodawane są za pomocą indeksowania. W tym przypadku elementy dodawane są do kolekcji dokładnie w określonej pozycji. Gdy do środka kolekcji zostanie dodany nowy element ArrayList, elementy już istniejące w tej kolekcji, które znajdują się poza określoną pozycją wstawienia nowego elementu, zostaną przesunięte na kolejne pozycje w stosunku do własnych, zwiększając w ten sposób rozmiar kolekcji. Kiedy najpierw spojrzymy na dane wyjściowe, zobaczymy:
Total No of Characters in List: 10
Total No of Characters in Array: 8
Dzieje się tak dlatego, że oprócz tablicy zawierającej 8 elementów, które dodajemy do ArrayList, jawnie dodajemy jeszcze 2 elementy, zwiększając w ten sposób rozmiar kolekcji do 10. Metoda getCharacterPosition(args)przyjmuje wartość elementu (imię osoby) i wyświetla pozycję tego elementu w kolekcji ArrayList. Jeśli w elemencie nie ma takiego elementu ArrayList, wyświetlana jest wartość -1. Metoda removeCharacter(args)usuwa określoną wartość elementu (imię osoby) z kolekcji, przyjmując jako argument albo indeks tego elementu, albo sam element. W powyższym kodzie możemy zauważyć, że rozmiar naszej kolekcji wzrósł do 8 zamiast 10 w związku z tym, że usunęliśmy z kolekcji 2 elementy. Jeśli rozmiary tablicy i kolekcji są takie same, metoda zwraca następujące wiersze:
The element Harry cannot be removed
The element Dumbledore cannot be removed
Wykonanie metody removeCharacter(args)jest uwarunkowane jedynie tym, że rozmiar kolekcji musi być większy od rozmiaru tablicy. Przykład 2. W tym przykładzie napiszemy prosty program wykorzystujący klasę - kolekcję Vector Listing 2. Kod wykonania dla przykładu 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();
        }
}
Uruchomienie tego programu da następujące dane wyjściowe:
The characters are Weasley
The characters are Potter
Powyższy kod jest tylko małą próbką, dostarczoną jako dowód, że nie ma dużej różnicy pomiędzy kolekcjami ArrayListi Vector. Kolekcją Vectormożna manipulować w taki sam sposób, jak kolekcją ArrayList, używając tych samych metod. Przykład 3. W tym przykładzie napiszemy prosty program wykorzystując klasę kolekcji HashMap Listing 3. Kod wykonania dla Przykładu 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();
    }
}
Uruchomienie tego programu da następujące dane wyjściowe:
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
Przyjrzyjmy się powyższy kod, krok po kroku. W tym przykładowym programie mamy tablicę ciągów, których elementami są nazwy znanych książek. Metoda mapAuthors()polega na stworzeniu ekspozycji tytułów książek wraz z ich autorami. Kluczem są tutaj tytuły książek, a wartościami autorzy tych książek. Wywołanie metody getBookList()powoduje iterację po tablicy Booksi pobieranie tytułów książek jeden po drugim. Następnie metoda sprawdza, czy dana książka ma własnego autora. Jak widzimy, jeśli metodą nie uda się znaleźć autora książki, wyświetli się komunikat not available. W przeciwnym razie autor i jego książka będą wyświetlani jeden po drugim. Wniosek: W tym artykule przestudiowaliśmy trochę klasy - kolekcje ArrayListi Vectorpróbowaliśmy HashMapużyć ich w naszym własnym kodzie. Artykuł oryginalny: Jak korzystać z klas ArrayList, Vector i HashMap dostarczonych przez Java Collections Framework
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION