C# - Insert и RemoveAt действия с List - не много смислени занимавки :)
Здравейте,
Намерих едно удобство с List<T>.Insert(Int32, T) Method. Може и да е съвсем ясно за някои...
От по-долните постове стана ясно, че това което съм си "открил" няма практическа полза, освен при някои задачи в модула, но дори и при тези задачи не е толкова голяма ползата, т.е. явно съм се занимавал с глупости....
C# ползволява да допълните елемент с метода .Insert(Int32, T) дори и като последен, т.е. index може да е равно на List<T>.Count! С други думи да допълните/вмъкнете елемент след текущия последен.
" index is greater than Count" - позволява се index = List<T>.Count.
Това е от документацията:
"Exceptions
ArgumentOutOfRangeException
index is less than 0.
-or-
index is greater than Count."
Практическото удобство, е че може да се ползва при нужда от заместване на елемент в колекция. Ползволява да допълним друг елемент на мястото на изтрития с .Insert(), без да извършваме проверка дали да ползваме .Add() или .Insert()! Разбира се, .Insert() не елиминира удобството на .Add() в други случи...
Примерен код:
List<string> list = Console.ReadLine().Split().ToList();
int index = int.Parse(Console.ReadLine());
list.RemoveAt(index);
list.Insert(index, "addedElement");
Console.WriteLine(string.Join(" ", list));
Примерен вход:
===
1 2 3 4 5
4
===
Резултат:
1 2 3 4 addedElement
Това са спестените проверки - if-else:
List<string> list = Console.ReadLine().Split().ToList();
int index = int.Parse(Console.ReadLine());
list.RemoveAt(index);
//list.Insert(index, "addedElement");
if (index == list.Count)
{
list.Add("addedElement");
}
else
{
list.Insert(index, "addedElement");
}
Console.WriteLine(string.Join(" ", list));
Поздрави,
Иван
P.S. Коригирах текста предвид обратната връзка на опитни колеги!
Здравей,
Напълно си прав - нужно е да се следи практичността и целесъобразността на дадени методи особено при големи структури от данни.
Аз по-скоро визирах удобството при решаване на задачи от домашни/тестове/изпити. Точно такива действия фигурират в редица задачи от този модул (Fundamentals Module).
Поздрави,
Иван :)
общо взето глупости....
колегата то го е казал.. Не се учете на глупости отсега. вярно Np bigО не ви говорят нищо но не е добра практика, не се опитвайте да откриете топлата вода там където хората от години развиват нещата.Има си причини някои неща да не се правят макар че съществуват.
Ивайло Кенов ни каза да не обръщаме внимание (поне на този етап) на тези детайли... стига да не прескачаме времевия лимит на Съдията.
После, ако не го бях написал, нямаше да ми нашокате канчето - в крайна сметка нали за това е този форум. Разбира се, коригирих текста на заглавието и първия пост, за да не заблуждавам някой в "полезността".
Поздрави,
Иван