Скачать презентацию Класс System Collections Array List ü Коллекциями называют Скачать презентацию Класс System Collections Array List ü Коллекциями называют

6_2_C#_ArrayList_IComparable.pptx

  • Количество слайдов: 8

Класс System. Collections. Array. List ü Коллекциями называют типы, описывающие набор(множество) элементов. Пример коллекции Класс System. Collections. Array. List ü Коллекциями называют типы, описывающие набор(множество) элементов. Пример коллекции – класс Array. List. ü Класс Array. List используется для работы с массивом элементов, число которых изменяется динамически. ü Непосредственный базовый класс – System. Object. public class Array. List : IList, ICollection, IEnumerable, ICloneable {…} ü Конструкторы: public Array. List(); public Array. List( int capacity ); public Array. List( ICollection c ); ü Объем (capacity): public virtual int Capacity {get; set; } public virtual void Trim. To. Size();

Интерфейсы System. IComparable, System. Collections. IComparer ü Если элементы коллекции реализуют интерфейс IComparable или Интерфейсы System. IComparable, System. Collections. IComparer ü Если элементы коллекции реализуют интерфейс IComparable или IСomparer, можно использовать методы Sort для сортировки коллекции. • В System. Array 8 перегрузок статического метода Sort. • B System. Collections. Array. List 3 экземплярных метода Sort. public interface IComparable { int Compare. To( object y ); } public interface IComparer { int Compare( object x, object y ); } Возвращаемое значение: <0 x0 x>y ( в методе Compare. To x – вызывающий объект) ü Интерфейс IComparable реализован в string, enum, double, Int 32, …

Реализация System. IComparable в типах Double и Single ü Интерфейс IComparable реализован в типах Реализация System. IComparable в типах Double и Single ü Интерфейс IComparable реализован в типах float, double. ü Возвращаемое значение мeтодов int Compare. To (object value) : отрицательно 0 положительно • значение вызывающего объекта меньше value ; • вызывающий объект - Na. N, value – число. • значение вызывающего объекта равно value ; • и вызывающий объект, и value имеют значение Na. N, бесконечность или минус бесконечность. • значение вызывающего объекта больше value ; • вызывающий объект - число, value равно Na. N ; • value равно null.

Реализация System. IComparable в типе string ü Интерфейс IComparable реализован в типе string. Сравнение Реализация System. IComparable в типе string ü Интерфейс IComparable реализован в типе string. Сравнение выполняется с учетом регистра и текущих региональных установок (current culture). ü Возвращаемое значение в мeтоде int Compare. To (object value); отрицательно 0 положительно • значение вызывающего объекта меньше value ; • значение вызывающего объекта равно value ; • значение вызывающего объекта больше value ; • value равно null.

Методы Sort в System. Array ü В System. Array определено 8 перегруженных методов Sort() Методы Sort в System. Array ü В System. Array определено 8 перегруженных методов Sort() для сортировки одномерных массивов. ü В элементах одномерного массива должен быть реализован один из интерфейсов IComparable или IComparer public static void Sort( Array array ); // сортирует массив c // использованием IComparable public static void Sort( Array array, IComparer comparer ); // сортирует c // использованием IComparer ( если comparer==null, // используется IComparable) public static void Sort ( Array array, int index, int length ); // сортирует подмножество элементов массива public static void Sort( Array keys, Array items ); // сортирует первый // массив и переставляет элементы второго в среднем // за O(nlog n) операций, значение items может быть // равно null.

Методы Sort в Array. List ü Сортировка всей коллекции с использованием метода Compare. To() Методы Sort в Array. List ü Сортировка всей коллекции с использованием метода Compare. To() интерфейса IComparable: public virtual void Sort(); ü Сортировка всей коллекции или ее части с использованием метода Compare() интерфейса IComparer: public virtual void Sort( IComparer comparer ); public virtual void Sort( int index, int count, IComparer comparer );

Реализация IComparable и IComparer. Пример class Institute : IComparable, IComparer { public string Name{ Реализация IComparable и IComparer. Пример class Institute : IComparable, IComparer { public string Name{ get; set; } public float Rating { get; set; } public int Number { get; set; } public Institute() { Name = ""; Rating = 0; Number = 0; } public Institute(string name, float rating, int number) { Name = name; Rating = rating; Number = number; } public int Compare. To(object obj) { return Name. Compare. To((obj as Institute). Name); } public int Compare(object x, object y) { Institute inst = x as Institute; return inst. Rating. Compare. To(((Institute)y). Rating); } public override string To. String() { return Name + " " + Number + " " + Rating; } internal class Compare. By. Number : IComparer { public int Compare(object x, object y) { Institute inst = x as Institute; return inst. Number. Compare. To(((Institute)y). Number); } } }

Методы Sort в Array. List. Пример static void Main(string[] args) { Array. List array. Методы Sort в Array. List. Пример static void Main(string[] args) { Array. List array. List = new Array. List(); array. List. Add(new Institute("МГУ", 10, 30000)); array. List. Add(new Institute("МВТУ", 8, 7000)); array. List. Add(new Institute("НГУ“, 7, 20000)); foreach (object element in array. List) Console. Write. Line(element); Console. Write. Line("n Sort by Name"); array. List. Sort(); foreach (object element in array. List) Console. Write. Line(element); Console. Write. Line("n Sort by Rating"); array. List. Sort(new Institute()); foreach (object element in array. List) Console. Write. Line(element); } Console. Write. Line("n Sort by Number"); array. List. Sort(new Institute. Compare. By. Number()); foreach (object element in array. List) Console. Write. Line(element); Вывод: МГУ 30000 10 МВТУ 7000 8 НГУ 20000 7 Sort by Name МВТУ 7000 8 МГУ 30000 10 НГУ 20000 7 Sort by Rating НГУ 20000 7 МВТУ 7000 8 МГУ 30000 10 Sort by Number МВТУ 7000 8 НГУ 20000 7 МГУ 30000 10