Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Класс ArrayList






В С# стандартные массивы имеют фиксированную длину, которая не может измениться во время выполнения программы. Класс ArrayList предназначен для поддержки динамических массивов, которые при необходимости могут увеличиваться или сокращаться.

Объект класса ArrayList представляет собой массив переменной длины, элементами которого являются объектные ссылки. Любой объект класса ArrayList создается с некоторым начальным размером. При превышении этого размера коллекция автоматически удваивается. В случае удаления объектов массив можно сократить.

Класс ArrayList реализует интерфейсы ICollection, IList, IEnumerable и ICloneable. В классе ArrayList определены следующие конструкторы:

public ArrayList() //создает пустой массив с максимальной емкостью равной 16 элементам, при текущей размерности 0

public ArrayList(int capacity) //создает массив с заданной емкостью capacity, при текущей размерности 0

public ArrayList(ICollection с) //строит массив, который инициализируется элементами коллекции с

Помимо методов, определенных в интерфейсах, которые реализует класс ArrayList, в нем определены и собственные методы, представленные в приложении 11

Пример 1.

В текстовом файле записана информация о людях (фамилия, имя, отчество, возраст, вес через пробел). Вывести на экран информацию о людях, отсортированную по возрасту.

using System;

using System.Collections;

using System.IO;

using System.Text;

namespace MyProgram

{

class Program

{

//структура для хранения данных об одном человеке

public struct one

{

public string f;

public string i;

public string o;

public int age;

public float massa;

}

//реализация стандартного интерфейса

public class SortByAge: IComparer

{

//переопределение метода Compare

int IComparer.Compare(object x, object y)

{

one t1 = (one)x;

one t2 = (one)y;

if (t1.age > t2.age) return 1;

if (t1.age < t2.age) return -1;

return 0;

}

}

static void ArrayPrint(string s, ArrayList a)

{

Console.WriteLine(s);

foreach (one x in a)

Console.WriteLine(x.f + " \t" + x.i + " \t" + x.o +

" \t" +x.age + " \t" + x.massa);

}

static void Main(string[] args)

{

StreamReader fileIn = new StreamReader(" t.txt",

Encoding.GetEncoding(1251));

string line;

one a;

ArrayList people = new ArrayList();

string[] temp = new string[3];

//цикл для организации обработки файла

while ((line=fileIn.ReadLine())! =null)

{

temp = line.Split(' ');

a.f = temp[0];

a.i = temp[1];

a.o = temp[2];

a.age = int.Parse(temp[3]);

a.massa = float.Parse(temp[4]);

people.Add(a);

}

fileIn.Close();

ArrayPrint(" Исходные данные: ", people);

people.Sort(new Program.SortByAge()); //вызов сортировки

ArrayPrint(" Отсортированные данные: ", people);

}

}

}

Контрольные вопросы:

1. Основные типы классов коллекций в С#

2. Что такое стек? Алгоритм работы стека.

3. Что такое очередь? Алгоритм работы очереди.

4. Что такое динамический массив? Алгоритм работы динамического массива.

Тема 4. Инкапсуляция и скрытие информации






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.