3986

Знайомство з динамічними масивами

Лабораторная работа

Информатика, кибернетика и программирование

Лабораторна робота №6 (Знайомство з динамічними масивами) Тема роботи: Знайомство з динамічними масивами. Мета роботи: Навчитися писати програми з використанням динамічних масивів. План роботи. Ознайомитися з інтерфейсами та їх влас...

Украинкский

2012-11-10

273.57 KB

14 чел.

6.

Лабораторна робота №6 (Знайомство з динамічними масивами)

Тема роботи: Знайомство з динамічними масивами.

Мета роботи: Навчитися писати програми з використанням динамічних масивів.

План роботи

1.

2.

3.

4.

5.

Ознайомитися з інтерфейсами та їх властивостями: Collection, List, Set.

Ознайомитися з класами: ArrayList, HeshSet, TreeSet.

Модифікувати програми для класів ArrayList, HeshSet, TreeSet згідно свого варіанту

Ознайомлення з колекціями класів, визначених програмістом.

Доробити програму з колекціями класів, визначених програмістом.

Теоретичні відомості

В Java 2 було запропоновано одне із найбільш цікавих доповнень – колекції. Структура

колекцій стандартизує спосіб, з допомогою якого ваші програми обробляють групи об’єктів. В

попередніх версіях Java для збереження і маніпулювання даними служили класи Dictionary,

Vector, Stack і Properties. Хоча ці класи були досить корисними, відчувалась нестача

уніфікованого, централізованого підходу при роботі з групами об’єктів. Наприклад, спосіб

використання класу Vector відрізнявся від використання класу Properties.

Інтерфейси колекцій

Нагадаємо, інтерфейс – це набір функцій, котрі повинні бути реалізовані (визначені) в класі.

Інтерфейс Collection.

Інтерфейс Collection – основа, на якій формується структура колекцій. В ньому

оголошуються методи, котрі визначаються всіма колекціями.

Основні методи колекцій:

boolean add(Object obj)

Додає obj до колекції. Повертає true, якщо obj був доданий до

колекції, і false якщо obj уже був доданий до колекції і якщо

колекція не допускає дублікатів

void clear()

Видаляє всі елементи із колекції

boolean contains(Object obj)

Повертає true, якщо колекція містить obj, false – якщо ні

Iterator iterator()

Повертає ітератор (iterator) для колекції

boolean remove(Object obj)

Видаляє один екземпляр obj із колекції. Повертає true якщо

елемент був видалений і false - якщо ні

int size()

Повертає кількість елементів, котрі містяться в колекції

Object toArray()

Повертає масив, котрий містить всі елементи колекції

Об’єкти додаються в колекцію з допомогою методу add(). Зверніть увагу, що add() отримує

аргумент типу Object. Оскільки Object – суперклас для всіх класів, в колекції можна зберігати

об’єкт будь-якого типу. Однак, примітивні типи зберігати не можна.

Для видалення об’єктів служить метод remove().

58


Інтерфейс List.

Цей інтерфейс доповнює Collection і визначає поведінку колекції, котра зберігає

послідовність елементів. Елементи можуть бути вставлені або отримані із колекції з допомогою

їх позиції в списку, котра відраховується від нуля.

Методи інтерфейсу List.

void add(int index, Object obj)

Object get(int index)

int indexOf(Object obj)

Object remove(int index)

Object set(int index)

Вставляє obj в колекцію в позицію з індексом

index. Будь-які елементи, котрі існували раніше в

точці вставки або вище неї будуть зсунуті (тобто

елементи не перезаписуються поверх існуючих)

Повертає об’єкт, котрий зберігається в позиції

index

Повертає індекс першого екземпляру obj.

Якщо obj не знайдено – повертається -1

Видаляє елемент із позиції index. В результаті

список ущільнюється (тобто, індекси наступних

елементів зменшуються на 1)

Встановлює об’єкт obj в позиції під номером

index

Інтерфейс Set.

Цей інтерфейс повторює інтерфейс Collection і оголошує поведінку колекції, котра не

допускає дублювання елементів. Тому метод add() повертає false, якщо здійснюється спроба

додати в набір дублюючі елементи.

Класи колекцій

Це класи – котрі реалізують вищезгадані інтерфейси, тобто реалізовують всі методи.

Клас ArrayList.

Цей клас реалізує інтерфейс List. ArrayList підтримує динамічні масиви, котрі можуть рости

по мірі необхідності. В Java стандартні масиви мають фіксовану довжину. Після того, як масиви

створені, вони не можуть розширюватись або зменшуватись, це означає, що ви наперед повинні

знати, скільки елементів буде знаходитись у масиві. Але, інколи, ви не можете до моменту

виконання точного розміру масиву. Саме для цього і служить клас ArrayList.

Приклад 1.

import java.util.ArrayList;

public class Lab2

{

public static void main(String[] args)

{

//створюємо динамічний масив

ArrayList al = new ArrayList();

System.out.println("Starting size of al: "+al.size());

//додаємо елементи в масив

59


al.add("C");

al.add("A");

al.add("B");

al.add("D");

al.add("C");

al.add("F");

al.add(1,"A2");

System.out.println("Size of al after add : "+al.size());

//показати на екрані список масиву

System.out.println("al consists of : "+al);

//видалити елементи із списку

al.remove("F");

al.remove(2);

System.out.println("Size of al after removing : "+al.size());

//показати на екрані список масиву

System.out.println("al consists of after removing : "+al);

}

}

Клас HashSet.

Цей клас реалізує інтерфейс Set. Він створює колекцію, котра використовує хеш-таблицю

для збереження колекції. Перевага використання такої таблиці в тому, що для великих масивів

зберігається постійним час виконання основних операцій, таких, як add(), remove(), size().

Важливо відмітити, що такий клас не гарантує впорядковування елементів.

Приклад 2.

import java.util.HashSet;

public class Lab2

{

public static void main(String[] args)

{

//створюємо динамічний масив

HashSet hs = new HashSet();

//додаємо елементи в масив

hs.add("C");

hs.add("A");

hs.add("B");

hs.add("D");

hs.add("C");

hs.add("F");

//показати на екрані список масиву

System.out.println("hs consists of : "+hs);

}

}

60


Клас TreeSet.

Цей клас теж реалізує інтерфейс Set, але на відміну від класу HasSet, об’єкти в ньому

зберігаються в відсортованому вигляді.

Приклад 3.

import java.util.TreeSet;

public class Lab2

{

public static void main(String[] args)

{

//створюємо динамічний масив

TreeSet ts = new TreeSet();

//додаємо елементи в масив

ts.add("C");

ts.add("A");

ts.add("B");

ts.add("D");

ts.add("C");

ts.add("F");

//показати на екрані список масиву

System.out.println("ts consists of : "+ts);

}

}

Колекції класів, визначених програмістом.

Для простоти в попередніх прикладах ми зберігали у колекціях вбудовані об’єкти типу

String. Однак, колекції не обмежуються збереженням простих типів. Потужність колекцій якраз в

тому і полягає, щоб зберігати будь-який тип об’єкта, в тому числі і створеного вами.

Приклад 4.

import java.util.*;

public class Lab2

{

public static void main(String[] args)

{

//створюємо динамічний масив

HashSet hs = new HashSet();

//додаємо елементи в масив

hs.add(new Address("Antoniv", "23/16 Naukova Str., Lviv"));

hs.add(new Address("Kozak", "12 Konovaltsa Str., Lviv"));

hs.add(new Address("Hrabovskyy", "21 Shevchenka Str., Lviv"));

hs.add(new Address("Hrabovskyy", "21 Chereshneva Str., Lviv"));

//показати на екрані список масиву

Iterator iterator = hs.iterator();

while(iterator.hasNext())

{

System.out.println(iterator.next()+"\n");

}

}

static class Address

{

private String name;

61


private String address;

public Address(String name, String address)

{

this.name = name;

this.address = address;

}

public int hashCode()

{

return name.hashCode();

}

public String toString()

{

return name+"\n"+address;

}

}

}

Зверніть увагу, що в визначеному нами класі Address задається метод hashCode(), котрий

повертає тип int. Цей метод повинен повертати унікальне значення для кожного об’єкту. При

цьому, якщо значення hashCode() співпадають, то об’єкти вважаються однаковими. Саме

звертаючись до цього методу клас HashSet визначає, чи такий об’єкт уже існує в наборі.

Порядок виконання роботи

1.

Виконайте всі наведені приклади.

2.

До масиву ArrayList() добавити об'єкти A, C, D, R, T та пояснити результат( в низу

програми в коментарях.

3.

До масиву HashSet() добавити об'єкти A, C, D, R, T та пояснити результат( в низу

програми в коментарях.

4.

До масиву TreeSet() добавити об'єкти A, C, D, R, T та пояснити результат( в низу

програми в коментарях.

5.

Поясніть чому в прикладі 4 об’єкт new Address("Hrabovskyy", "21 Chereshneva Str.,

Lviv") не буде доданий до набору.

6.

Видрукуйте всі елементи на екрані, користуючись методами size(), get(index) з

допомогою циклу for.

7. Зробіть висновки. Оформити звіт. У звіті повинно бути текст програми і скріншоти результатів.

8. Прикріпити до VNS файл [Ваша Фамілія].zip в архіві повинно бути файли програм [Ваша

Фамілія]_labN_k.class ,a також файли звіту [Ваша Фамілія]_Zvit_LabN.mdb, де N – номер

лабораторної роботи, k – номер програми.

Контрольні питання

1. Який клас дозволяє дублювання елементів в колекції?

2. Який клас створює колекцію, котра використовує хеш-таблицю для збереження колекції.

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

виконання основних операцій, таких, як add(), remove(), size().

3. Скільки об'єктів можна створити з одного класу?

4. Чи можна добавити об'єкт у масив ArrayList у визначену позицію?

5. Який масив впорядковує елементи колекції?

6. Які методи інтерфейс Collection успадковує від інтерфейсу List, а які перевизначає?

62



 

А также другие работы, которые могут Вас заинтересовать

22683. Теорія молекули водню. Обмінна взаємодія 72 KB
  Тоді рня Шредінгера для електронів при фіксованих ядрах: Нульове наближення: V΄=0атоми віддалені: R= тоді V=V1 V2 . та теж буде розв΄язком: Ени нерозрізненні тоді тоді буде: сим. Тоді будуть поправки до енергії різні для сим.
22684. Принцип роботи прискорювачів заряджених частинок 42 KB
  2 R радіус орбіти частинки в магнітному полі m маса чки c швидкість світла H напруження магн. Металева сфера заряджена до великого потенціалу і частинки виходять з неї через трубку; енергія частинок десь 28 Мев. Підвищення енергії частинки частинки майже вдвічі можливе при використанні каскадних електростатичних прискорювачів. Циклотрон складається з секторних електродів дуантів перпендикулярно до яких прикладено сильне однорідне магнітне поле яке потрібне для задання циклічної траєкторії частинки.
22685. Сучасні уявлення про ядерні сили. Моделі атомного ядра 43.5 KB
  Моделі атомного ядра. де І момент інерції повний момент ядра враховує деформацію ядра при обертанні. В основі моделі лежить припущення про те що нуклони рухаються в самоузгодженому полі задача стає одночастинковою самоузгодження сили взаємодії між нуклонами замінюють на загально силовий центр тобто вводять середнє для всіх нуклонів ядра поле. Спектр ядра розбитий на групи близьких рівнів з великими проміжками між групами.
22686. Міжнародні комерційні операції 36.5 KB
  Проблеми: відбувається неодночасно тобто одна сторона в багатьох випадках кредитує іншу сторону внаслідок чого виникають ризикові ситуації фірми ризикують отримати непотрібні їм товари. Наприклад Україна експортує до Китаю товари. Китай сплачує ці товари якщо Україна закупить на певну суму виручки товари в Китаї. офсет подібний до зустрічної закупівлі тим що одна сторона погоджується придбати товари і послуги за певний суми виторгу від початкового продажу.
22687. Принципи ЗЕД 26 KB
  Принцип свободи зовнішньоекономічного підприємництва що полягає у праві субєктів зовнішньоекономічної діяльності добровільно вступати у зовнішньоекономічні звязки; праві субєктів зовнішньоекономічної діяльності здійснювати її в будьяких формах які прямо не заборонені чинними законами України; виключному праві власності субєктів зовнішньоекономічної діяльності на всі одержані ними результати зовнішньоекономічної діяльності. Принцип юридичної рівності і недискримінації що полягає у рівності перед законом всіх субєктів...
22688. Облік фінансових вкладень та консолідована звітність 209 KB
  ІНВЕСТИЦІЯ - це актив, яким володіє підприємство з метою збільшення капіталу через розподіл доходу (наприклад, відсотків, роялті, дивідендів та ренти), для зростання вартості капіталу або для інших вигод.
22689. Сальдо платіжного балансу України 30 KB
  обсяги прямих іноземних інвестицій в Україну постійно зростали. З початку 2001 року темпи надходження прямих іноземних інвестицій в Україну уповільнилися. Слід окремо наголосити на тому що значна частина інвестицій надійшла з офшорних зон.
22690. Операції з давальницькою сировиною (толінг) 29.5 KB
  Важлива підстава для віднесення операції до толінгу: сировину яка ввозиться або купується на території країни переробки переробне підприємство вносить під безмитний режим. Основні схеми толінгу: іноземний постачальник сировини оплачує вітчизняному виробникові її переробку стає власником одержаного продукту вивозить його за межі країни і продає на закордонних ринках. давальницька сировина переробляється на підприємстві даної країни з наступним експортом продукту переробки під митним контролем. Толінг: зовнішній внутрішній сировина...
22691. Митно-тарифне регулювання ЗЕД 32.5 KB
  Правові економічні та організаційні основи митної справи визначені Митним Кодексом України 1991 р. Система митних органів України: Державний митний комітет України регіональні митні управління митниці митні пости Основні функції митних органів: приймають участь у розробці митної політики та її реалізації забезпечують дотримання законодавства захищають економічні інтереси України стягують мита податки та інші платежі здійснюють митну статистику зовнішньої торгівлі та спеціальну статистику ведуть товарну номенклатуру ЗЕД...