Клас ArrayList

Пакет javautil містить класи, які вельми зручно використовувати у випадку, якщо програмі потрібно зберігати кілька екземплярів (колекцію) Деяких обєктів в памяті Ось деякі з популярних класів колекцій: ArrayList, HashTable, HashMap і List Я покажу вам, як використовувати клас javautilArrayListНедостатком звичайного масиву є те, що вам заздалегідь потрібно знати число елементів у масиві Памятайте, щоб створити екземпляр масиву, потрібно вказати число між квадратними дужками:

String[] myFriends = new String[5]

 не має такого обмеження – можна створити екземпляр цієї колекції, не знаючи про те, скільки обєктів буде в ньому Просто додавайте стільки елементів, скільки потрібно

Навіщо тоді використовувати масиви Давайте завжди використовувати клас ArrayList На жаль, безкоштовний сир буває тільки в мишоловці За зручність потрібно заплатити – ArrayList працює кілька повільніше, ніж звичайний масив Крім того, в ньому можна зберігати тільки обєкти, але не можна просто так зберегти набір чисел з типом int (їх потрібно загортати в класи – обгортки або користуватися так званим автобокхінгом – autoboxing)

Щоб створити і заповнити обєкт ArrayList, спочатку потрібно створити його екземпляр Далі створити екземпляри обєктів, які плануєте в ньому зберігати і додати їх у ArrayList, за допомогою його методу add () Нижче представлена ​​невелика програма, яка заповнить обєкт ArrayList обєктами з типом String і виведе вміст получившейся колекції

import javautilArrayList

public class ArrayListDemo {

public static void main(String[] args) {

/ / Створюємо і заповнюємо ArrayList ArrayList friends = new ArrayList () friendsadd (Олена) friendsadd (Анна) friendsadd (Микола) friendsadd (Сергій)

/ / Скільки в ньому друзів

int friendsCount = friendssize()

/ / Друкуємо вміст ArrayList

for (int i=0 i&ltfriendsCount i++){

Systemoutprintln (Друг № + i + це + friendsget (i))

}

}

}

Ця програма надрукує наступні рядки:

Друг № 0 це Олена Друг № 1 це Анна Друг № 2 це Микола Друг № 3 це Сергій

Метод get ()витягуєз обєкта ArrayList елемент, який розташовується за вказаною індексу  Так як ви можете зберігати в колекції будь-які обєкти, метод get () повертає кожен елемент з типом Object Відповідальність за приведення цього обєкта до правильного типу даних лягає на програму Ми не зобовязані були робити це в попередньому прикладі тільки тому, що зберігали в колекції friends обєкти з типом String

Java автоматично виконує перетворення обєкта з типом Object в обєкт з типом String Але, якщо ви вирішите зберігати в ArrayList інші обєкти, наприклад, екземпляри класу Fish, правильний код для додавання і вилучення конкретних обєктів Fish може виглядати так, як у програмі FishTank, яка наводиться далі

Спочатку ця програма створює кілька екземплярів класу Fish, призначає якесь значення кольору, вагою та поточної глибині занурення і зберігає ці значення в обєкт ArrayList з імям fishTank Потім програма отримує обєкти з колекції, приводить їх тип до типу Fish і друкує значення цих обєктів

import javautilArrayList

public class FishTank {

public static void main(String[] args) { ArrayList fishTank = new ArrayList()

Fish theFish

Fish aFish = new Fish (20) aFishcolor = червону; aFishweight = 2

fishTankadd(aFish)

aFish =  new Fish (10) aFishcolor = зелену; aFishweight = 5 fishTankadd (aFish)

int fishCount = fishTanksize()

for (int i=0i&ltfishCount i++){

theFish = (Fish) fishTankget(i)

Systemoutprintln (Зловив + theFishcolor +

” рибу з вагою + TheFishweight + кг Глибина:

+ theFishcurrentDepth)

}

}

}

Нижче наводяться вихідні дані програми FishTank:

Зловив червону рибу з вагою 20 кг Глибина: 20

Зловив зелену рибу з вагою 50 кг Глибина: 10

Тепер, коли ви прочитали про рівні доступу в мові Java, можна трохи змінити класи Pet і Fish Такі змінні як age, color, weight і height можна оголошувати з модифікатором доступу protected, якщо ви думаєте, що хто – то захоче наслідувати свої класи з них А змінна currentDepth повинна бути private Також потрібно додати нові public методи, наприклад, getAge (), щоб повертати значення змінної age, і метод setAge (), щоб встановлювати значення цієї змінної

Програмісти з хорошими манерами не дозволяють одному класу безпосередньо змінювати властивості іншого класу Клас повинен надавати методи, які б змінювали його внутрішні елементи Ось чому клас Score з попереднього розділу був спроектований з private змінними, які могли бути отримані або змінені тільки за допомогою спеціальних getter – і setter – методів для читання і запису відповідно

У цій главі я показав вам різні елементи і прийоми в мові Java, які, на перший погляд, здаються неповязаними один з одним Проте всі ці елементи дуже часто використовуються професійними програмістами на Java Після виконання практичних вправ до цієї чолі, ви будете краще розуміти як ці елементи працюють разом Матеріали для додаткового читання

1 Колекції Java:

http://downloadoraclecom/javase/tutorial/col lections/intro/indexhtml

2 :

http://downloadoraclecom/javase/7/docs/api

/java/util/ArrayListhtml

3 Робота з датами:

http://wwwvogellade/articles/JavaDateTimeA PI/articlehtml

4 Клас Calendar:

http://downloadoraclecom/javase/7/docs/api

/java/util/Calendarhtml

 Практичні вправи

1 Додайте перевантажений конструктор за замовчуванням (без аргументів) в клас Fish Цей конструктор повинен встановлювати значення стартової позиції равное10 метрам Клас FishMaster створюватиме екземпляр обєкта Fish оченьпросто, ось так:

Fish myFish = new Fish()

2 Додайте в клас Score конструктор з чотирма аргументами Створіть програму ScoreWriter3, яка буде заповнювати екземпляри класу Score не за допомогою setter – методів, а у момент створення обєкта, наприклад так: Score aScore = new  Score (Микола,

“Смирнов, 250, today)

Практичні вправи для розумників і розумниць

Погуглити як використовувати клас HashMap Спробуйте створити програму HashMapDemo, яка схожа на програму ArrayListDemo, але в колекції зберігаються імена і телефони

Джерело: Java Programming for Kids, Parents and Grandparents by Yakov Fain

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*