Клас ArrayList
Зміст
- 1. До якого виду колекцій належить клас ArrayList?
- 2. Які інтерфейси реалізуються в класі ArrayList?
- 3. Як створити пусту колекцію ArrayList?
- 4. Як створити колекцію ArrayList ємністю 25 елементів?
- 5. Як додати новий елемент в колекцію ArrayList?
- 6. Як визначити кількість елементів масиву типу ArrayList? Властивість Count.
- 7. Як перевести масив типу ArrayList в масив цілих чисел? Приклад демонстрації методу ToArray() з класу ArrayList.
- 8. Організація роботи класу ArrayList зі структурами на прикладі структури типу КНИГА (BOOK).
- 9. Як видалити усі елементи з масиву типу ArrayList? Властивість Clear().
- 10. Як видалити заданий елемент з масиву ArrayList? Метод Remove().
- 11. Як скопіювати в іншу область пам’яті елемент типу ArrayList? Метод Clone().
- 12. Визначення наявності елементу в масиві ArrayList. Метод Contains().
- 13. Як з масиву ArrayList вибрати його частину? Метод GetRange().
- 14. Приклад обчислення суми елементів масиву типу ArrayList.
- 15. Пошук позиції першого входження елементу в масиві ArrayList. Метод IndexOf().
- 16. Як вставити елемент у задану позицію масиву ArrayList? Метод Insert().
- 17. Як у масив ArrayList вставити інший масив з заданої позиції? Метод InsertRange().
- 18. Визначення останнього входження заданого елементу. Метод LastIndexOf().
- 19. Як видалити елемент з масиву ArrayList, який знаходиться в заданій позиції? Метод RemoveAt().
- 20. Видалення діапазону значень, заданих індексами. Метод RemoveRange().
- 21. Реверс масиву ArrayList. Функція Reverse().
- 22. Копіювання елементів масиву ArrayList в інший масив. Метод SetRange().
- 23. Як посортувати масив типу ArrayList? Метод Sort().
- 24. Як скопіювати дані з ArrayList в компонент ListBox?
Пошук на інших ресурсах:
1. До якого виду колекцій належить клас ArrayList?
Відповідь: до неузагальнених колекцій.
Щоб підключити використання неузагальнених колекцій, потрібно вставити наступний код:
using System.Collections;
⇑
2. Які інтерфейси реалізуються в класі ArrayList?
В класі ArrayList реалізуються інтерфейси:
ICollection, IList, IEnumerable, ICloneable.
⇑
3. Як створити пусту колекцію ArrayList?
У даному рядку створюється пуста колекція типу ArrayList з іменем al:
ArrayList al = new ArrayList();
⇑
4. Як створити колекцію ArrayList ємністю 25 елементів?
ArrayList al = new ArrayList(25);
⇑
5. Як додати новий елемент в колекцію ArrayList?
Щоб додати новий елемент в колекцію ArrayList потрібно використати метод Add(). У даному прикладі формується динамічний масив з 3-х елементів: [12, 23, 88].
al.Add(12); // додає число 12 до динамічного масиву al.Add(23); // додає число 23 до динамічного масиву al.Add(88); // додає число 88 до динамічного масиву
Елементи, що додані у колекцію мають тип object.
Рис. 1. Тип елементів ArrayList
⇑
6. Як визначити кількість елементів масиву типу ArrayList? Властивість Count.
Для цього використовується властивість Count.
Приклад.
ArrayList al = new ArrayList(); al.Add(10); al.Add(20); al.Add(30); // кількість елементів int n; n = al.Count; // n = 3
⇑
7. Як перевести масив типу ArrayList в масив цілих чисел? Приклад демонстрації методу ToArray() з класу ArrayList.
У даному прикладі відбувається перетворення масиву al типу ArrayList у масив цілих чисел ar. Також знаходиться сума sum елементів масиву ar.
ArrayList al = new ArrayList(); // додати три числа до динамічного масиву al.Add(10); al.Add(20); al.Add(30); int sum = 0; // перетворення масиву al в масив цілих чисел ar int[] ar = (int[])al.ToArray(typeof(int)); // знаходження суми for (int i = 0; i < ar.Length; i++) { sum += ar[i]; } label1.Text = sum.ToString();// виведення значення суми на форму
⇑
8. Організація роботи класу ArrayList зі структурами на прикладі структури типу КНИГА (BOOK).
8.1. Організація масиву структур типу BOOK (книга). Метод Add().
Нехай задано структуру типу КНИГА:
struct BOOK { public string Author; public string Title; public int year; public double price; };
Організувати динамічний масив типу struct BOOK використовуючи клас ArrayList.
Відповідь:
// створити першу книгу BOOK b1 = new BOOK(); ArrayList al = new ArrayList(); b1.Author = "Author-1"; b1.Title = "Title-1"; b1.year = 1998; b1.price = 90.95; al.Add(b1); // додати книгу в масив // створити другу книгу b1.Author = "Author-02"; b1.Title = "Title-02"; b1.year = 1980; b1.price = 130.94; al.Add(b1); // додати книгу в масив
⇑
8.2. Як перевести динамічний масив ArrayList в масив структур? Демонстрація методу ToArray() з класу ArrayList для структури типу BOOK (КНИГА).
У даному прикладі реалізується перетворення динамічного масиву al типу ArrayList в масив структур типу BOOK. Ім’я масиву структур – ar.
BOOK[] ar = (BOOK[])al.ToArray(typeof(BOOK));
⇑
8.3. Як визначити кількість елементів структури типу BOOK (КНИГА) в масиві ArrayList?
Нехай задано структуру типу BOOK (КНИГА) з внесеними даними про дві книги (див. п.8.1). Щоб визначити кількість внесених книг, потрібно використати властивість Count.
int n; n = al.Count; // n = 2
⇑
9. Як видалити усі елементи з масиву типу ArrayList? Властивість Clear().
ArrayList al = new ArrayList(); al.Add(10); // додати числа до масиву al al.Add(20); al.Add(30); // видалити усі елементи з масиву al.Clear(); // al.Count = 0
⇑
10.Як видалити заданий елемент з масиву ArrayList? Метод Remove().
Приклад 1. Видалення елементу 20 з масиву ArrayList.
ArrayList al = new ArrayList(); al.Add(10); // додати три числа al.Add(20); al.Add(30); al.Remove(20); // видалили елемент зі значенням 20
Команда Remove() видаляє перший елемент, що зустрівся з заданим значенням. Тобто, якщо в списку декілька елементів зі значенням 20, то видалено буде тільки перший елемент.
Приклад 2. Видалення декількох елементів 20 з масиву ArrayList.
ArrayList al = new ArrayList(); al.Add(10); al.Add(20); al.Add(30); al.Add(20); al.Add(20); // al = [10, 20, 30, 20, 20] al.Remove(20); // al = [10, 30, 20, 20] al.Remove(20); // al = [10, 30, 20]
⇑
11. Як скопіювати в іншу область пам’яті елемент типу ArrayList? Метод Clone().
Якщо виконати присвоєння двох об’єктів типу ArrayList, то вони будуть посилатись на одну й ту ж область пам’яті (рисунок 2). Приклад:
ArrayList al = new ArrayList(); ArrayList al2; al.Add(10); // додає число 10 до динамічного масиву al.Add(20); al.Add(30); al2 = al; // al2 = al = [10, 20, 30] - вказують на одну область пам’яті al2.Remove(20); // al = [10, 30]
Рисунок 2. Змінні al та al2 вказують на спільну ділянку пам’яті, яка була виділена при описі змінної al
Якщо потрібно зробити копію зі змінної al з одночасним виділенням додаткової пам’яті, то слід використати метод Clone(). У цьому випадку змінні al та al2 вказують на різні ділянки пам’яті (рисунок 3).
ArrayList al = new ArrayList(); ArrayList al2; al.Add(10); al.Add(20); al.Add(30); al2 = (ArrayList)al.Clone(); al2.Remove(20); // al = [10, 20, 30]; al2 = [10, 30]
Рисунок 3. З допомогою методу Clone() здійснюється копіювання даних зі змінної al у змінну al2 з одночасним виділенням пам’яті
⇑
12. Визначення наявності елементу в масиві ArrayList. Метод Contains().
Метод Contains() повертає true, якщо заданий елемент є в списку ArrayList. Інакше, метод повертає false.
ArrayList al = new ArrayList(); al.Add(25); al.Add(-18); al.Add(33); bool is_el; is_el = al.Contains(-18); // is_el = True is_el = al.Contains(50); // is_el = False
⇑
13. Як з масиву ArrayList вибрати його частину? Метод GetRange().
Метод GetRange() повертає масив типу ArrayList, який є підмножиною поточного масиву ArrayList.
Приклад.
ArrayList al = new ArrayList(); ArrayList al2; al.Add(0); al.Add(1); al.Add(2); al.Add(3); al.Add(4); al.Add(5); // al = [0, 1, 2, 3, 4, 5] al2 = al.GetRange(2, 3); // al2 = [2, 3, 4]
⇑
14. Приклад обчислення суми елементів масиву типу ArrayList.
У даному прикладі обчислюється сума елементів масиву ArrayList. Елементи масиву приводяться до типу double.
ArrayList al = new ArrayList(); double sum = 0; al.Add(0.6); al.Add(-10.45); al.Add(2.667); al.Add(300.78); for (int i = 0; i < al.Count; i++) { sum = sum + (double)al[i]; } label1.Text = sum.ToString(); // sum = 293.597
⇑
15. Пошук позиції першого входження елементу в масиві ArrayList. Метод IndexOf().
Для визначення позиції першого входження заданого елементу в масиві ArrayList використовується функція IndexOf(). Функція повертає позицію першого входження. Якщо заданого елементу немає в масиві, то функція повертає -1.
Функція має три перевантажені варіанти.
Нехай сформовано наступний масив.
ArrayList al = new ArrayList(); int index; al.Add(10); al.Add(20); al.Add(30); al.Add(40); al.Add(50); al.Add(40); al.Add(30); // al = [10, 20, 30, 40, 50, 40, 30]
Приклад 1. Пошук позиції першого входження заданого елементу.
index = al.IndexOf(30); // index = 2
Приклад 2. Пошук позиції починаючи з заданого індексу до кінця масиву. Функція має два параметри. Перший параметр – шуканий елемент. Другий параметр – позиція, з якої стартує пошук.
index = al.IndexOf(30, 3); // index = 6
Приклад 3. Пошук позиції заданого елементу. Функція має три параметри. Перший параметр – шуканий елемент. Другий параметр – позиція, з якої стартує пошук. Третій параметр – кількість символів, що розглядаються під час пошуку.
index = al.IndexOf(30, 3, 2); // index = -1
⇑
16. Як вставити елемент у задану позицію масиву ArrayList? Метод Insert().
Метод Insert() призначений для вставки елементу в задану позицію. Метод має два параметри. Перший параметр – елемент, що вставляється. Другий параметр – позиція елементу.
Приклад.
ArrayList al = new ArrayList(); al.Add(10); al.Add(20); al.Add(50); // al = [10, 20, 50] al.Insert(0, 5); // al = [5, 10, 20, 50] al.Insert(3, 60); // al = [5, 10, 20, 50, 60] // помилка - позиція виходить за межі масиву // al.Insert(8, 30);
⇑
17. Як у масив ArrayList вставити інший масив з заданої позиції? Метод InsertRange().
Метод InsertRange() дозволяє вставляти підмасив у масив типу ArrayList. Метод отримує два параметри. Перший параметр – позиція вставки. Другий параметр – масив, що вставляється.
Приклад.
ArrayList al = new ArrayList(); ArrayList al2 = new ArrayList(); al.Add(10); al.Add(20); al.Add(50); // al = [10, 20, 50] al2.Add(30); al2.Add(40); // al2 = [30, 40] al.InsertRange(2, al2); // al = [10, 20, 30, 40, 50]
⇑
18. Визначення останнього входження заданого елементу. Метод LastIndexOf().
Метод LastIndexOf() знаходить позицію останнього входження елементу. Метод здійснює пошук з кінця до початку. Якщо елемент не знайдено, то метод повертає -1.
Метод має три перевантажені варіанти.
Приклад.
ArrayList al = new ArrayList(); al.Add(10); al.Add(20); al.Add(30); al.Add(50); al.Add(30); al.Add(20); al.Add(10); // al = [10, 20, 30, 50, 30, 20, 10] int index; // пошук значення 20 з кінця масиву до початку index = al.LastIndexOf(20); // index = 5 // пошук значення 30 з позиції 1 до початку index = al.LastIndexOf(30, 1); // index = -1 // пошук значення 10 з позиції 5 до початку, розглядаються 2 елементи index = al.LastIndexOf(10, 5, 2); // index = -1
⇑
19. Як видалити елемент з масиву ArrayList, який знаходиться в заданій позиції? Метод RemoveAt().
Щоб у масиві ArrayList видалити елемент з заданої позиції потрібно використати метод RemoveAt().
Приклад.
ArrayList al = new ArrayList(); int index; al.Add(10); al.Add(20); al.Add(30); al.Add(40); al.Add(50); // al = [10, 20, 30, 40, 50] index = 3; al.RemoveAt(index); // al = [10, 20, 30, 50]
⇑
20. Видалення діапазону значень, заданих індексами. Метод RemoveRange().
Щоб з масиву ArrayList видалити декілька елементів заданих діапазоном, потрібно використати метод RemoveRange(). Метод приймає два параметри. Перший параметр – індекс, з якого починається видалення. Другий параметр – кількість символів, що видаляються.
ArrayList al = new ArrayList(); al.Add(10); al.Add(20); al.Add(30); al.Add(40); al.Add(50); // al = [10, 20, 30, 40, 50] al.RemoveRange(1, 2); // al = [10, 40, 50]
⇑
21. Реверс масиву ArrayList. Функція Reverse().
Функція Reverse() обертає масив типу ArrayList у зворотному порядку. Функція має два перевантажених варіанти.
Приклад 1. Використання функції Reverse().
ArrayList al = new ArrayList(); al.Add(10); al.Add(20); al.Add(30); al.Add(40); al.Add(50); // al = [10, 20, 30, 40, 50] al.Reverse(); // al = [50, 40, 30, 20, 10]
Приклад 2. Функція Reverse() з двома параметрами. Перший параметр – номер позиції, з якої здійснюється реверс. Другий параметр – кількість елементів, що обробляється.
ArrayList al = new ArrayList(); al.Add(10); al.Add(20); al.Add(30); al.Add(40); al.Add(50); // al = [10, 20, 30, 40, 50] al.Reverse(2, 3); // al = [10, 20, 50, 40, 30]
⇑
22. Копіювання елементів масиву ArrayList в інший масив. Метод SetRange().
Метод SetRange() копіює елементи масиву ArrayList в інший масив ArrayList, замінюючи їх.
Приклад.
ArrayList al = new ArrayList(); ArrayList al2 = new ArrayList(); al.Add(10); al.Add(20); al.Add(30); al.Add(40); al.Add(50); // al = [10, 20, 30, 40, 50] al2.Add(5); al2.Add(15); al2.Add(25); // al2 = [5, 15, 25] al.SetRange(2, al2); // al = [10, 20, 5, 15, 25]
⇑
23. Як посортувати масив типу ArrayList? Метод Sort().
Метод Sort() сортує елементи масиву ArrayList використовуючи реалізацію інтерфейсу IComparable.
Приклад.
ArrayList al = new ArrayList(); al.Add(5); al.Add(-2); al.Add(10); al.Add(0); al.Add(-8); // al = [5, -2, 10, 0, -8] al.Sort(); // al = [-8, -2, 0, 5, 10]
⇑
24. Як скопіювати дані з ArrayList в компонент ListBox?
Приклад 1.
Нижче наведено приклад копіювання даних з масиву ArrayList в компонент ListBox для його відображення на формі.
ArrayList al = new ArrayList(); al.Add(5); al.Add(-2); al.Add(10); al.Add(0); al.Add(-8); // al = [5, -2, 10, 0, -8] listBox1.Items.Clear(); for (int i = 0; i < al.Count; i++) { listBox1.Items.Add(al[i]); }
Приклад 2. Копіювання структури типу BOOK (КНИГА).
Нехай дано наступну структуру:
struct BOOK { public string Author; public string Title; public int year; public double price; };
Щоб додати дані в ListBox потрібно використати наступний код:
BOOK b1 = new BOOK(); ArrayList al = new ArrayList(25); // створити першу книгу b1.Author = "Author-1"; b1.Title = "Title-1"; b1.year = 1998; b1.price = 90.95; al.Add(b1); // додати книгу в масив // створити другу книгу b1.Author = "Author-02"; b1.Title = "Title-02"; b1.year = 1980; b1.price = 130.94; al.Add(b1); // перетворення книги BOOK[] ar = (BOOK[])al.ToArray(typeof(BOOK)); // видалити всі елементи з масиву al.Clear(); // al.Count = 0 listBox1.Items.Clear(); for (int i = 0; i < al.Count; i++) { listBox1.Items.Add(ar[i].Author + " - " + ar[i].Title + " - " + ar[i].year.ToString() + " - " + ar[i].price.ToString()); }