1. ArrayList
клас
Днес ще проучим ArrayList
класа. Това е първият от няколко класа, известни като колекции . В Java колекциите са толкова широка и полезна тема, че им е посветен цял мисия на CodeGym.
За да разберете напълно How са структурирани колекциите и всички техни нюанси, трябва първо да научите ООП, интерфейси, наследяване, основите на многонишковостта и много повече.
Така че днес просто ще се запознаем с най-простия вид колекция. Но на достатъчно дълбоко ниво, за да разберете How да го използвате и How работи. А сега се запознайте с ArrayList
колекцията .
Предисторията
Ще започна с малко предистория. Програмистите наистина не харесаха един аспект на масивите: фактът, че размерът им не може да се променя. Ами ако трябва да съхраните още три елемента в масив, но има само една празна клетка?
Единственото решение за ограниченията на пространството на масива беше да се създаде много голям масив, за да побере всички елементи, които може да се наложи да съхранявате. Но това обикновено беше загуба на памет. Ако един масив обикновено съдържа два or три елемента, но има дори малка вероятност да трябва да съхрани 100 от тях, тогава е необходимо да се създаде масив с капацитет за съхраняване на 100.
И така, Howво измислиха програмистите? Те написаха ArrayList
класа, който вършеше същата работа като Array
класа, но можеше да се променя размера.
Клас ArrayList
Името на ArrayList
класа се образува от две думи: Array + List. Array
е масив и List
е списък.
Всеки ArrayList
обект съдържа обикновен масив от елементи. Когато четете елементи от ArrayList
, обектът ги извлича от вътрешния си масив. Когато пишете елементи, той ги записва във вътрешния масив.
Класът ArrayList няма всички недостатъци, които имат масивите. То знае How да:
- Съхранявайте елементи от определен тип
- Динамично преоразмеряване на списъка
- Добавете елементи в края на списъка
- Вмъкнете елементи в началото or средата на списъка
- Премахнете елементи от всяко място в списъка
За повече подробности вижте по-долу:
2. Създаване на ArrayList
обект
За да създадете ArrayList
обект, трябва да напишете code по следния начин:
ArrayList<TypeParameter> name = new ArrayList<TypeParameter>();
Къде ArrayList
е типът/класът на колекцията, TypeParameter
е типът на елементите, съхранявани в ArrayList
колекцията, и name
е името на ArrayList<TypeParameter>
променлива.
Променливата name
има общ тип. Състои се от два типа: първо се посочва типът на колекцията, а след това се използват ъглови скоби, за да се посочи типът на елементите, съхранявани в колекцията.
Примери:
Код | Описание |
---|---|
|
Списък с цели числа |
|
Списък от низове |
|
Списък с реални числа |
За разлика от масивите, колекциите не могат да съхраняват примитивни типове, а само референтни типове . Така че, ако имате нужда от колекция от int
s, използвайте Integer
instead of това класа обвивка.
3. Операции с анArrayList
Първоначално дължината на новосъздадения списък е нула, тъй като съдържа 0 елемента. Ако добавите един елемент към списъка, неговата дължина се увеличава с 1. Ако премахнете добавения елемент, дължината намалява обратно до нула.
Следната table може да ви научи повече за методите на ArrayList
класа:
Методи | Описание |
---|---|
|
Добавя предадения елемент към списъка |
|
Добавя елемент към определено място в списъка. |
|
Връща елемента, чийто индекс еindex |
|
Присвоява value на елемента, чийто индекс еindex |
|
Премахва елемента, чийто индекс е index . Връща премахнатия елемент. |
|
Премахва елемента, който предавате на метода. Ако има повече от един такъв елемент, първият ще бъде премахнат. |
|
Изчиства списъка, т.е. премахва всички елементи от списъка. |
|
Проверява дали списъкът съдържа value . |
|
Проверява дали списъкът е празен or не. С други думи, дали дължината на списъка е нула. |
|
Връща размера на списъка, т.е. броя на елементите в списъка. |
|
Връща масив, съдържащ елементите на списъка. Трябва да предадете масива на метода. |
Тези методи ви позволяват да правите почти всичко, което бихте искали със списъка: да разменяте елементи, да добавяте елементи и да премахвате елементи. Можете да изчистите списъка с една команда or дори да преобразувате списъка в масив.
4. Сравнение на ArrayList
иArray
Не мисля, че можем да избегнем сравнението ArrayList
и масива.
Има само 4 действия, които можете да извършите с масиви:
- Създайте масив
- Вземете елемент по индекс
- Задаване на елемент по индекс
- Вземете дължината на масива
Ето тези операции, когато се прилагат към масив и ArrayList
:
Масив | ArrayList |
---|---|
|
|
|
|
|
|
|
|
Нека сравним How ArrayList
работи един с това How работи масив. Например, нека изпълним тази задача: "прочетете 10 низа от клавиатурата и ги покажете на екрана в обратен ред"
Използване на масив | Използване на ArrayList |
---|---|
|
|
Аналогията е ясна. При масивите всичко е няHow по-кратко и ясно. Но ArrayList
също така не е трудно: за да получим елемент, използваме get()
метода; за промяна на елемент, set()
метод; за да получите дължината на списъка, метода size()
.
Така че защо програмистите използват ArrayList
класа?
Целият смисъл, разбира се, са всички други методи, които обикновените масиви нямат:
- Добавете елемент към списъка
- Добавете елемент в средата на списъка
- Намерете елемент в списъка
- Премахване на елемент от списък
GO TO FULL VERSION