Зараз обговорюють

"Тобто є ряд завдань, які взагалі без рекурсії не наважуються."  - це як розуміти? Перефразуй, будь ласка. 

виправив, йшлося про те що деякі завдання можна вирішити лише при використанні рекурсії

Спасибі дуже корисна стаття

А ще щось планується подібного найближчим часом?


Дякую за підтримку, радий що Вам сподобалось!

Так маю вже майже дороблений проект по управлінні Audio файлом, на заміну стандартним клавішам управління HTML5, але ще не встиг відтестувати програвання файлів з інтернету, поки лише локально працює

Надіюсь найближчим часом дороблю й закину

Рахунки

webmoneyeur - E385818210641
usd - Z304643423050
uah - U354026817492
rub - R301704373231easypay80002677bitcoin1F5HRGroUtEQW9HBNbeew8iKh5KQ8vJxzw

Зворотній зв'язок

Для покращення роботи сайту надсилайте свої зауваження:
mailЗауваження
mailПропозиція

Статистика

UkrNET - поисково-информационный ресурс

C# : Class List<T>

List<T> клас використовується для зберігання та завантаження елементів. Він може мати дубльовані елементи. Для використання потрібно підключити простір імен:

using System.Collections.Generic
.

Приклад

Давайте розглянемо приклад класу List<T>, який зберігає елементи за допомогою методу Add() і виведення списоку за допомогою циклу.

using System;
using System.Collections.Generic;

public class TestList
{
    public static void Main(string[] args)
    {  
        // Створення нового списку типу string
        List<string> names = new List<string>();
		// наповнюємо список
        names.Add("Іван");
        names.Add("Петро");
        names.Add("Олег");
        names.Add("Сергій");
  
        // Виведення даних:
        foreach (string name in names)
        {
			Console.WriteLine(name);
        }
    }
} 

Результат:

  • Іван
  • Петро
  • Олег
  • Сергій

При створенні екземпляра списку можна використати ініціалізацію:

List<string> names = new List<string>() { "Іван", "Петро", "Олег", "Сергій" };

даний список буде аналогічний попередньому, який наповнювався через Add() метод

Для виведення також можемо вивести і за допомогою циклу for

for (int i = 0; i < names.Count; i++)
{
	Console.WriteLine(names[i]);
} 

Створення списку з використанням власного класу

using System;
using System.Collections.Generic;

namespace TestList
{
    class Program
    {
        static void Main(string[] args)
        {
            List<Car> cars = new List<Car>();
            cars.Add(new Car() { Name = "BMW", Price = 4000 });
            cars.Add(new Car() { Name = "Toyota", Price = 3500 });
            cars.Add(new Car() { Name = "Mercedes", Price = 4100 });
            cars.Add(new Car() { Name = "Lada", Price = 400 });

            foreach (Car car in cars)
            {
                Console.WriteLine("Марка машини: {0} продається за ціною {1}", car.Name, car.Price);
            }
        }
    }
    public class Car
    {
        public string Name { get; set; }
        public double Price { get; set; }
    }
} 

Результат:

  • Марка машини: BMW продається за ціною 4000
  • Марка машини: Toyota продається за ціною 3500
  • Марка машини: Mercedes продається за ціною 4100
  • Марка машини: Lada продається за ціною 400

Властивості класу

Capacity

Повертає, або задає загальне число елементів, які може вмістити внутрішня структура даних без зміни розміру.

List<int> nums = new List<int>() { 1, 4, 0, 10 };
int x = nums.Capacity; // x = 4

Count

Отримує число елементів, що містяться в списку.

List<int> nums = new List<int>() { 1, 4, 0, 10 };
int x = nums.Count; // x = 4

Методи класу

Add

Додає об'єкт в кінець списку.

List<string> names = new List<string>();
names.Add("Іван");

AddRange

Додає елементи зазначеної колекції в кінець списку.

string[] namesArr = { "Іван", "Петро", "Олег", "Сергій" };
List<string> names = new List<string>();
names.AddRange(namesArr);
// також можна й так:
List<string> names = new List<string>(namesArr);

AsReadOnly

Повертає для поточної колекції оболонку ReadOnlyCollection, доступну тільки для читання.

string[] namesArr = { "Іван", "Петро", "Олег", "Сергій" };
List<string> names = new List<string>(namesArr);
IList<string> names2 = names.AsReadOnly();

тепер при спробі зміни елемента колекції names2 ви отримайте помилку:

names2[0] = "222"; // System.NotSupportedException: "Колекція доступна тільки для читання."

BinarySearch

Виконує пошук елемента по всьому відсортованому списку, використовуючи компаратор за замовчуванням, і повертає індекс елемента, починаючи з нуля.

string[] namesArr = { "Іван", "Петро", "Олег", "Сергій" };
List<string> names = new List<string>(namesArr);
names.Sort();
int index = names.BinarySearch("Олег") // отримаємо індекс елемента в списку = 1

Clear

Видаляє всі елементи з колекції

names.Clear();

Contains

Визначає, чи входить елемент в колекцію
string[] namesArr = { "Іван", "Петро", "Олег", "Сергій" };
List<string> names = new List<string>(namesArr);
if (names.Contains("Сергій"))
    Console.WriteLine("true");
else
    Console.WriteLine("false");

В нашому випадку отримаємо true так як спислок містить ім'я яке шукається

ConvertAll

Перетворює елементи поточного списку в інший тип, і повертає список перетворених елементів.

List<string> list = new List<string>() { "3", "2", "4", "0" };
List<int> list2 = list.ConvertAll<int>(new Converter(x => Convert.ToInt32(x)));

CopyTo

Копіює весь список в сумісний одновимірний масив, починаючи з першого елемента цільового масиву.

List<string> names = new List<string>() { "Іван", "Петро", "Олег", "Сергій" };
string[] arr = new string[4];
names.CopyTo(arr);
names.CopyTo(arr, 2); // де 2 це індекс елемента масиву з якого вставляються скопійовані дані
names.CopyTo(1, arr, 2, 3); 
// де: 
// 1 - індекс з якого починається копіювання списку 
// arr - масив куди копіюємо 
// 2 - індекс елемента масиву з якого вставляються скопійовані дані 
// 3 - кількість елементів які будуть копіюватись із списку

Equals

Визначає, чи рівний заданий об'єкт поточному об'єкту.

List<string> names = new List<string>() { "Іван", "Петро", "Олег", "Сергій" };
foreach (string name in names)
{
    if(name.Equals("Олег"))
        Console.WriteLine(name);
}

Exists

Визначає, чи містить список елементи, що задовільняють умовам зазначеного предиката.

List<string> names = new List<string>() { "Іван", "Петро", "Олег", "Сергій" };
if (names.Exists(x => x == "Петро"))
{
    foreach (string name in names)
    {
        Console.WriteLine(name);
    }
}

Find

Виконує пошук елемента, що задовольняє умовам зазначеного предиката, і повертає перше знайдене входження в межах всього списку.

List<int> nums = new List<int>() { 1, 4, 0, 10 };
Console.WriteLine(nums.Find(x => x >= 4)); // =4

FindAll

Витягує всі елементи, що задовільняють умовам зазначеного предиката.

List<int> nums = new List<int>() { 1, 4, 0, 10 };
foreach (int num in nums.FindAll(x => x >= 4))
{
    Console.WriteLine(num);
}

FindIndex

Виконує пошук елемента, що задовольняє умовам зазначеного предиката, і повертає відлічуваний від нуля індекс першого знайденого значення в межах всього списку.

List<int> nums = new List<int>() { 1, 4, 0, 10 };
int x = nums.FindIndex(x => x >= 10); // x = 3

Якщо нічого не знайдено поверне -1

FindLast

Виконує пошук елемента, що задовільняє умовам зазначеного предиката, і повертає останній знайдений елемент в межах всього списку.

List<int> nums = new List<int>() { 1, 4, 0, 10 };
int x = nums.FindLast(x => x >= 4); // x = 10

FindLastIndex

Виконує пошук елемента, що задовільняє умовам зазначеного предиката, і повертає відлічуваний від нуля індекс останнього знайденого входження в межах всього списку.

List<int> nums = new List<int>() { 1, 4, 0, 10 };
int x = nums.FindLastIndex(x => x >= 4); // x = 3

ForEach

Виконує вказану дію з кожним елементом списку.

static void Main(string[] args)
{
    List<int> nums = new List<int>() { 1, 4, 0, 10 };
    nums.ForEach(x=>Print(x.ToString()));
}
private static void Print(string str)
{
    Console.WriteLine(str);
}

GetEnumerator

Повертає нумератор, який здійснює перебір елементів списку.

var x =nums.GetEnumerator();
x.MoveNext(); // перейти на наступний індекс
x.Current // поточний індекс

GetHashCode

Служить хеш-функцією за замовчуванням.

GetRange

Створює неповну копію діапазону елементів вихідного списку.

List<int> nums = new List<int>() { 1, 4, 0, 10 };
foreach (int num in nums.GetRange(1, 2)) // де 1 - початковий індекс, а 2 - кількість елементів
{
    Console.WriteLine(num); // результат 4, 0
}

GetType

Повертає об'єкт Type для поточного екземпляра.

IndexOf

Здійснює пошук зазначеного об'єкта та повертає відлічуваний від нуля індекс першого входження, знайденого в межах всього списку.

List<int> nums = new List<int>() { 1, 4, 0, 10 };
int x = nums.IndexOf(4); // x = 1
int x = nums.IndexOf(4, 0); // де 0 - індекс з якого починати пошук елемента
int x = nums.IndexOf(4, 0, 2); // де 2 - кількість елементів списку по яких проводиться пошук

Якщо нічого не знайдено поверне -1

Insert

Вставляє елемент в список за вказаним індексом.

List<int> nums = new List<int>() { 1, 4, 0, 10 };
nums.Insert(2, 58); // результат: 1, 4, 58, 0, 10

InsertRange

Вставляє елементи колекції в список за вказаним індексом.

List<int> nums = new List<int>() { 1, 4, 0, 10 };
nums.InsertRange(2, new int[] { 10, 5, 8 }); // результат: 1, 4, 10, 5, 8, 0, 10

LastIndexOf

Здійснює пошук зазначеного об'єкта та повертає відлічуваний від нуля індекс останнього входження, знайденого в межах всього списку.

List<int> nums = new List<int>() { 1, 4, 0, 10 };
int x = nums.LastIndexOf(10); // x = 1
int x = nums.LastIndexOf(10, 3); // де 3 - індекс з якого починати пошук елемента
int x = nums.LastIndexOf(10, 3, 1); // де 1 - кількість елементів списку по яких проводиться пошук

Якщо нічого не знайдено поверне -1

Remove

Видаляє перше входження зазначеного об'єкта з списку.

List<int> nums = new List<int>() { 1, 4, 0, 10 };
nums.Remove(10); // Результат: 1, 4, 0

RemoveAll

Видаляє всі елементи, що задовільняють умову зазначеного предиката.

List<int> nums = new List<int>() { 1, 4, 0, 10 };
nums.RemoveAll(x => x > 3); // Результат: 1, 0

RemoveAt

Видаляє елемент списку з вказаним індексом.

List<int> nums = new List<int>() { 1, 4, 0, 10 };
nums.RemoveAt(2); // Результат: 1, 4, 10

RemoveRange

Видаляє діапазон елементів зі списку.

List<int> nums = new List<int>() { 1, 4, 0, 10 };
nums.RemoveRange(1, 2); // Результат: 1, 10; де 1 - початковий індекс, а 2 - кількість елементів для видалення

Reverse

Змінює порядок елементів у всьому списку на зворотний.

List<int> nums = new List<int>() { 1, 4, 0, 10 };
nums.Reverse(); // Результат: 10, 0, 4, 1

Sort

Сортує елементи в усьому списку за допомогою функції порівняння за замовчуванням.

List<int> nums = new List<int>() { 1, 4, 0, 10 };
nums.Sort(); // Результат: 0, 1, 4, 10

ToArray

Копіює елементи списку в новий масив.

ToString

Повертає строкове представлення поточного об'єкта.

TrimExcess

Задає ємність, рівну фактичному числу елементів в списку, якщо це число менше порогового значення.

TrueForAll

Визначає, чи всі елементи списку задовольняють умовам зазначеного предиката.

List<int> nums = new List<int>() { 1, 4, 0, 10 };
if (nums.TrueForAll(x => x > 0))
    Console.WriteLine("true");
else
    Console.WriteLine("false"); //  даному списку є 0-е число тому отримаємо false

view368like0dislike0 avatard_l4w clock 2017-11-22 05:36

Коментарі:



Для даної статті відсутні коментарі

Про нас

"Programmers World" розроблено з метою полегшення в освоєнні навичок програмування, та поширення матеріалів з сфери ІТ Українською мовою.

Кожен бажаючий може безкоштовно користуватися ресурсами сайту, щоб:

- Вивчати теоретичні аспекти мов програмування

- Переглядати практичне застосування теорії при виконанні різних міні проектів з відкритим кодом

- Розміщати свої завдання на форумі для допомоги в їх реалізації, або готового коду який може бути корисний іншим користувачам

- Спілкуватись з іншими користувачами та обмінюватись досвідом

Сайт функціонує на безопланій основі та ентузіазмі розробника, якщо Ви бажаєте долучитись до розвитку даного проекту то можете пожертвувати кошти на рахунки розміщені в блоці "Допомога сайту".

Сайт

Зареєстровані користувачі можуть скористатися системою діалогів, в профілі користувача, для отримання потрібної інформації. Написати!

Також Ви можете використати форми відправки Зауважень та Пропозицій.


Електронна пошта

Ви можете звертатись на нашу поштову скриньку site.programmersworld@gmail.com

www.000webhost.com