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



 

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

33424. Основы имиджелогии. Структура имиджа и его составляющие 26.48 KB
  Структура имиджа и его составляющие. В ряде определений получила отражение знаковая информационно символическая природа имиджа. Но данный аспект в технологии имиджа на мой взгляд не главное. В этом определении ощутим акцент на таком прагматическом результате построения имиджа как передача информации о субъекте в виде его имиджа адресату в качестве которого выступает социальная группа.
33425. Финансовый менеджмент 22.96 KB
  Эффективное управление финансовой деятельностью предприятия обеспечивается реализацией принципов основными из которых являются: интегрированность с общей системой управления предприятием; комплексный характер формирования управленческих решений; высокий динамизм управления; многовариантность подходов к разработке отдельных управленческих решений; ориентированность на стратегические цели развития предприятия. Главной целью финансового менеджмента является обеспечение максимизации благосостояния собственников предприятия в текущем и...
33426. Управление денежными активами или остатком денежных средств и их эквивалентов 21.97 KB
  Размер остатка денежных активов которым оперирует предприятие в процессе хозяйственной деятельности определяет уровень его абсолютной платежеспособности влияет на размер капитала инвестируемого в оборотные активы а также характеризует в определенной мере его инвестиционные возможности. Операционный или трансакционный остаток денежных активов формируется с целью обеспечения текущих платежей связанных с операционной деятельностью предприятия: по закупке сырья материалов и полуфабрикатов; оплате труда; уплате налогов; оплате услуг...
33427. Управление затратами и себестоимостью продукции 23.55 KB
  Проведение общего анализа издержек предприятия: Анализ учетной политики предприятия; Формирование классификатора потребляемых ресурсов; АВС–анализ структуры затрат по видам ресурсов; Классификация затрат (переменные/постоянные, прямые/косвенные); Факторный анализ тенденций изменений структуры затрат
33428. Управление денежными средствами 25.91 KB
  Устанавливается минимальная величина денежных средств которую целесообразно иметь на р с исходя из средней потребности денег для оплаты банковских счетов и других требований; 2. определяются расходы по хранению средств на р с 4. рассчитывается верхняя граница денежных средств исходя из того что при ее достижении часть ДС необходимо будет конвертировать в ценные бумаги.
33429. Управление рисками 23.62 KB
  Выявление всех потенциальных рисков и анализ возможных потерь. Оценка и ранжирование потенциальных рисков. Выбор методов и определение путей снижения рисков. Пока риск не определен невозможно предпринять какиелибо меры по его минимизации поэтому первой стадией в управлении риском является идентификация вероятных рисков.
33430. Финансовое прогнозирование 22.04 KB
  К основной цели финансового прогнозирования осуществляемого для научного обоснования показателей финансовых планов и способствующего выработке концепции развития финансов на прогнозируемый период можно отнести оценку предполагаемого объема финансовых ресурсов и определение предпочтительных вариантов финансового обеспечения деятельности субъектов хозяйствования органов государственной власти и местного самоуправления.Задачами финансового прогнозирования являются: 1 увязка материальновещественных и финансовостоимостных пропорций на макро...
33431. Финансовый план 24.12 KB
  Финансовый план баланс доходов и расходов предприятия состоит из четырех разделов: доходы и поступления средств расходы и отчисления кредитные взаимоотношения взаимоотношения с бюджетом. Доходы и поступления средств 1. Планируемые внереализационных доходы в том числе: доходы от долевого участия в уставном капитале других предприятий; доходы полученные от ценных бумаг; доходы от хранения денежных средств на депозитных счетах в банках и других финансовокредитных учреждениях; доходы от сдачи имущества в аренду.
33432. Финансовые результаты предприятия 22.58 KB
  Анализ формирования и использования прибыли. Определяются абсолютные суммы средств выплачиваемых из прибыли их динамика и структура. Использование прибыли означает уплату в бюджет налога на прибыль; распределение прибыли оставшейся в распоряжении предприятия. Налог на прибыль уплачивается в бюджет не со всей суммы прибыли отчетного года а с так называемой налоговой прибыли налогооблагаемой прибыли.