овп2 / ОВП2_коллекции1
.pdfКлассы обобщенных коллекций
SortedList<TKey, TValue>
Создает отсортированный список из пар "ключ-значение". Обеспечивает такие же функциональные возможности, как
инеобобщенный класс SortedList
SortedSet<T>
Создает отсортированное множество
Stack<T>
Создает стек. Обеспечивает такие же функциональные возможности, как и необобщенный класс Stack
Класс ArrayList
Массив типа ArrayList создается с первоначальным размером.
Если этот размер превышается, то массив автоматически расширяется.
При удалении объектов из такого массива он автоматически сокращается.
Многие способы применения коллекций класса ArrayList распространяются и на другие коллекции, в том числе и на обобщенные.
В классе ArrayList реализуются интерфейсы ICollection, IList, IEnumerable и ICloneable.
Конструкторы класса ArrayList: public ArrayList()
public ArrayList(ICollection с) public ArrayList(int capacity)
Класс ArrayList
Некоторые из наиболее часто используемых методов класса ArrayList :
AddRange()
Добавляет элементы из коллекции в конец вызывающей коллекции типа ArrayList
BinarySearch()
Выполняет поиск в вызывающей коллекции значения. Возвращает индекс найденного элемента. Если искомое значение не найдено, возвращает отрицательное значение. Вызывающий список должен быть отсортирован
СоруТо()
Копирует содержимое вызывающей коллекции в массив, который должен быть одномерным и совместимым по типу с элементами коллекции
FixedSize()
Заключает коллекцию в оболочку типа ArrayList с фиксированным размером и возвращает часть вызывающей коллекции типа ArrayList,которая начинается с указанного элементаи включает количество элементов, определяемое параметром. Возвращаемый объект ссылается на те же элементы, что и вызывающий объект.
Класс ArrayList
Некоторые из наиболее часто используемых методов класса ArrayList :
IndexOf()
Возвращает индекс первого вхождения объекта в вызывающей коллекции. Если искомый объект не обнаружен, возвращает значение -1
InsertRange()
Вставляет элементы коллекции в вызывающую коллекцию, начиная с элемента, указываемого по индексу
Readonly()
Заключает коллекцию в оболочку типа ArrayList, доступную только для чтения, и возвращает результат
RemoveRange()
Удаляет часть вызывающей коллекции, начиная с элемента, указываемого по индексу index, и включая количество элементов, определяемое параметром count
Sort()
Сортирует вызывающую коллекцию по возрастанию
Класс ArrayList
Пример. В текстовом файле записана информация о людях (фамилия, имя, отчество, возраст, вес через пробел). Вывести на экран информацию о людях, отсортированную по возрасту.
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;
}
Класс ArrayList
public class SortByAge : IComparer //реализация стандартного интерфейса {
int IComparer.Compare(object x, object y) //переопределение метода Compare{
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);
}
Класс ArrayList
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);
}
}
Класс Hashtable
Класс Hashtable предназначен для создания коллекции, в которой для хранения объектов используется хэш-таблица. В хэш-таблице для хранения информации используется механизм, именуемый хэшированием (hashing).
Преобразование ключа в хэш-код выполняется автоматически. Преимущество хэширования — в том, что оно позволяет сокращать время выполнения таких операций, как поиск, считывание и запись данных, даже для больших объемов информации.
Класс Hashtable реализует стандартные интерфейсы
IDictionary,
ICollection,
IEnumerable,
ISerializable,
IDeserializationCallback
ICloneable.
Размер хэш-таблицы может динамически изменяться. Размер таблицы увеличивается тогда, когда количество элементов превышает значение, равное произведению вместимости таблицы и ее коэффициента заполнения, который может принимать значение на интервале от 0,1 до 1,0. По умолчанию установлен коэффициент равный 1,0.
Класс Hashtable
В классе Hashtable определено несколько конструкторов:
public Hashtable() |
//создает пустую хэш-таблицу |
// строит хэш-таблиц, которая инициализируется элементами коллекции с
public Hashtable(IDictionary с)
public Hashtable(int capacity) //создает хэш-таблицу с вместимостью capacity
//создает хэш-таблицу вместимостью capacity и коэффициентом заполнения n
public Hashtable(int capacity, float n)
Класс Hashtable
В классе Hashtable определяется ряд собственных методов, помимо тех, что уже объявлены в интерфейсах, которые в нем реализуются. Некоторые из наиболее часто используемых методов этого класса приведены ниже
ContainsKey()
Возвращает логическое значение true, если в вызывающей коллекции типа Hashtable содержится ключ, а иначе — логическое значение false
ContainsValue()
Возвращает логическое значение true, если в вызывающей коллекции типа Hashtable содержится значение, а иначе — логическое значение false
GetEnumerator()
Возвращает для вызывающей коллекции типа Hashtable
перечислитель типа IDictionaryEnumerator