Besitzender Namespace: System.Collections.Generic
öffentliche Klasse List
List
Vorteile von Generika: Sie erhöhen die Effizienz und Flexibilität beim Schreiben objektorientierter Programme mit der Sprache C#. Es gibt kein erzwungenes Ein- und Auspacken von Werttypen oder Downcasting von Referenztypen, sodass die Leistung verbessert wird.
Leistungshinweise:
Bedenken Sie bei der Entscheidung, ob Sie IList
Wenn Sie einen Referenztyp für den Typ T der IList
"Jede Referenz oder jeder Werttyp, der der ArrayList hinzugefügt wird, wird implizit in Object umgewandelt. Wenn es sich bei dem Element um einen Werttyp handelt, muss es beim Hinzufügen zur Liste in ein Boxing gesetzt werden, während Unboxing-Vorgänge ausgeführt werden Abrufvorgänge sowie Ein- und Auspackvorgänge verringern die Leistung; die Auswirkungen des Einpackens und Auspackens sind erheblich, wenn große Sammlungen wiederholt werden müssen. 🎜>
1 🎜>
Deklaration:
T ist der Typ der Elemente in der Liste, nehmen Sie nun den String-Typ als Beispiel
Zum Beispiel: List
2. List
Liste erstellen
Z.B. mit einer Sammlung als Parameter:
string[] temArr = { "Ha", "Hunter", "Tom", "Lily", "Jay", "Jim" , "Kuku", "Locu" };List
1. Add(T item) Füge ein Element hinzu
Zum Beispiel: mList.Add("John");
2. AddRange(IEnumerable
Bsp.:
string[] temArr = { „Ha“, „Hunter“, „Tom“, „Lily“, „Jay“, „Jim“, „Kuku“, „Locu“ };mList.AddRange(temArr);
3. Insert(int index, T item); Füge ein Element an der Indexposition hinzu
Beispiel: mList.Insert (1, „Hei“) ;
Elemente in der Liste durchlaufen:
Beispiel:foreach (T element in mList) T的类型与mList声明时一样 { Console.WriteLine(element); }
foreach (string s in mList) { Console.WriteLine(s); }
1. Remove(T item) löscht einen Wert
Zum Beispiel: mList.Remove("Hunter");
Löschen Sie das Element dessen Index index ist
Beispiel: mList.RemoveAt(0);
3. RemoveRange(int index, int count);
Von Beginn mit dem Indexindex , Anzahlelemente löschen
Beispiel: mList.RemoveRange(3, 2);
Bestimmen Sie, ob sich ein Element in der Liste befindet:
Liste enthält (T-Element) Gibt zurück wahr oder falsch, sehr praktisch
Beispiel:
Sortieren Sie die Elemente in der Liste:if (mList.Contains("Hunter")) { Console.WriteLine("There is Hunter in the list"); } else { mList.Add("Hunter"); Console.WriteLine("Add Hunter successfully."); }
List Sort () Standard ist der erste Buchstabe des Elements in aufsteigender Reihenfolge
Beispiel: mList.Sort();
kehrt die Reihenfolge der Elemente in der Liste um:
List Reverse ( ) kann in Verbindung mit List.Sort() verwendet werden, um den gewünschten Effekt zu erzielen
Zum Beispiel: mList.Sort();
List clear: List. mList.Clear();
Ermitteln Sie die Anzahl der Elemente in der Liste:
int count = mList .Count ();
Console.WriteLine("Die Anzahl der Elemente in der Liste: " +count);
2. Erweiterte und leistungsstarke Methoden der Liste:
Liste verwendet als ein Beispiel:
public T Find(Predicate
Predicate ist ein Delegat der Methode. Wenn das an ihn übergebene Objekt mit den im Delegaten definierten Bedingungen übereinstimmt, gibt die Methode „true“ zurück. Die Elemente der aktuellen Liste werden einzeln an den Prädikat-Delegaten übergeben und in der Liste vorwärts verschoben, beginnend mit dem ersten Element und endend mit dem letzten Element. Die Verarbeitung stoppt, wenn eine Übereinstimmung gefunden wird.
Delegieren an a Funktion:
string listFind = mList.Find(name => //name是变量,代表的是mList { //中元素,自己设定 if (name.Length > 3) { return true; } return false; }); Console.WriteLine(listFind); //输出是Hunter
E.g.:
string listFind1 = mList.Find(ListFind); //委托给ListFind函数
Console.WriteLine(listFind); //输出是Hunter
ListFind函数:
public bool ListFind(string name) { if (name.Length > 3) { return true; } return false; }
用法与List.Find相同。
List.TrueForAll方法: 确定是否 List 中的每个元素都与指定的谓词所定义的条件相匹配。
public bool TrueForAll(Predicate
委托给拉姆达表达式:
E.g.:
bool flag = mList.TrueForAll(name => { if (name.Length > 3) { return true; } else { return false; } } ); Console.WriteLine("True for all: "+flag); //flag值为false
委托给一个函数,这里用到上面的ListFind函数:
E.g.:
bool flag = mList.TrueForAll(ListFind); //委托给ListFind函数
Console.WriteLine("True for all: "+flag); //flag值为false
这两种方法的结果是一样的。
List.FindAll方法:检索与指定谓词所定义的条件相匹配的所有元素。
public List
E.g.:
List<string> subList = mList.FindAll(ListFind); //委托给ListFind函数 foreach (string s in subList) { Console.WriteLine("element in subList: "+s); }
这时subList存储的就是所有长度大于3的元素
List.Take(n): 获得前n行 返回值为IEnumetable
E.g.:
IEnumerable<string> takeList= mList.Take(5); foreach (string s in takeList) { Console.WriteLine("element in takeList: " + s); }
这时takeList存放的元素就是mList中的前5个
List.Where方法:检索与指定谓词所定义的条件相匹配的所有元素。跟List.FindAll方法类似。
E.g.:
IEnumerable<string> whereList = mList.Where(name => { if (name.Length > 3) { return true; } else { return false; } }); foreach (string s in subList) { Console.WriteLine("element in subList: "+s); }
这时subList存储的就是所有长度大于3的元素
List.RemoveAll方法:移除与指定的谓词所定义的条件相匹配的所有元素。
public int RemoveAll(Predicate
E.g.:
mList.RemoveAll(name => { if (name.Length > 3) { return true; } else { return false; } }); foreach (string s in mList) { Console.WriteLine("element in mList: " + s); }
这时mList存储的就是移除长度大于3之后的元素。
List
比如
List
intList.Add(34); //添加
intList.Remove(34);//删除
intList.RemoveAt(0); //删除位于某处的元素
intList.Count; //链表长度
还有Insert,Find,FindAll,Contains等方法,也有索引方法 intList[0] = 23;
1.减少了装箱拆箱
2.便于编译时检查数据类型
List
更多C# List