소유 네임스페이스: System.Collections.Generic
공용 클래스 List
List ;Class는 ArrayList 클래스와 일반적으로 동일합니다. 이 클래스는 필요에 따라 크기를 동적으로 늘릴 수 있는 배열을 사용하여 IList
제네릭의 이점: C# 언어를 사용하여 객체 지향 프로그램을 작성하는 데 뛰어난 효율성과 유연성을 추가합니다. 값 유형의 강제 박싱 및 언박싱 또는 참조 유형의 다운캐스팅이 없으므로 성능이 향상됩니다.
성능 참고 사항:
IList8742468051c85b06f0a0af9e3e506b5c 또는 ArrayList 클래스(둘 다 비슷한 기능을 가짐)를 사용할지 결정할 때 IList8742468051c85b06f0a0af9e3e506b5c 클래스가 더 나은 성능을 발휘한다는 점을 기억하세요. -안전한.
IList8742468051c85b06f0a0af9e3e506b5c 클래스의 T 유형에 대한 참조 유형을 사용하는 경우 두 클래스의 동작은 완전히 동일합니다. 그러나 T 유형에 대한 값 유형을 사용하는 경우 구현 및 박싱 문제를 고려해야 합니다.
" ArrayList에 추가된 모든 참조 또는 값 유형은 암시적으로 Object로 캐스트됩니다. 항목이 값 유형인 경우 목록에 추가할 때 boxing해야 하며 Unboxing 작업은 동안 수행됩니다. 캐스트, 박싱 및 언박싱 작업은 모두 성능을 저하시킵니다. 대규모 컬렉션을 반복해야 하는 상황에서는 박싱 및 언박싱의 영향이 중요합니다. ”
1. 🎜>
1. List8742468051c85b06f0a0af9e3e506b5c mList = new List8742468051c85b06f0a0af9e3e506b5c()
T는 목록의 요소 유형입니다. 이제 문자열 유형을 예로 들어보겠습니다.
예: List
2. List
🎜>목록 만들기
string[] temArr = { "Ha", "Hunter", "Tom", "Lily", "Jay", "Jim" , "Kuku", "Locu" };
List
요소 추가:
1. Add(T 항목) 요소 추가
string[] temArr = { "Ha","Hunter", "Tom", "Lily", "Jay", "Jim", "Kuku" , "Locu" };
mList.AddRange(temArr);
3. Insert(int index, T item); 인덱스 위치에 요소를 추가합니다
foreach (T element in mList) T的类型与mList声明时一样 { Console.WriteLine(element); }예:
foreach (string s in mList) { Console.WriteLine(s); }요소 삭제:
1. List.Remove(T 항목)는 값을 삭제합니다
예: mList.RemoveAt(0);
3. List.RemoveRange(int index, int count);
아래 첨자 인덱스에서 시작, 개수 요소 삭제
예: mList.RemoveRange(3, 2);
요소가 목록에 있는지 확인:
List.Contains(T item ) 매우 실용적임
예:
if (mList.Contains("Hunter")) { Console.WriteLine("There is Hunter in the list"); } else { mList.Add("Hunter"); Console.WriteLine("Add Hunter successfully."); }
목록의 요소 정렬:
목록 정렬() 기본값은 목록에 있는 요소의 첫 글자입니다. 오름차순
예: mList.Sort();
목록의 요소 순서를 뒤집는 경우:
List.Reverse() List Sort와 함께 사용할 수 있습니다. ()는 원하는 효과를 얻기 위해 함께 사용됩니다
예: mList.Sort();
List Clear: List.Clear ()
예: mList.Clear() ;
목록의 요소 수 가져오기:
List.Count () int 값 반환
예:
int count = mList.Count();Console.WriteLine("목록의 요소 수: " +count);
2. List의 고급화되고 강력한 방법:
예제에서 사용된 목록:
string[] temArr = { 하","헌터", "톰", "릴리", "제이", "짐", "쿠쿠", " "로쿠" };
mList.AddRange ( temArr);
List.Find 메서드: 지정된 조건자에 정의된 조건과 일치하는 요소를 검색하고 전체 목록에서 첫 번째로 일치하는 요소를 반환합니다.
public T Find(Predicate8742468051c85b06f0a0af9e3e506b5c match);
Predicate는 메서드에 대한 대리자입니다. 전달된 개체가 대리자에 정의된 조건과 일치하면 메서드는 true를 반환합니다. 현재 목록의 요소는 Predicate 대리자에게 하나씩 전달되고 목록에서 앞으로 이동하며 첫 번째 요소부터 시작하여 마지막 요소로 끝납니다. 일치하는 항목이 발견되면 처리가 중지됩니다.
술어를 함수 또는 람다 식에 위임할 수 있습니다.
람다 식에 위임:
예:
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(Predicate8742468051c85b06f0a0af9e3e506b5c match);
委托给拉姆达表达式:
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 List8742468051c85b06f0a0af9e3e506b5c FindAll(Predicate8742468051c85b06f0a0af9e3e506b5c match);
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行 返回值为IEnumetable8742468051c85b06f0a0af9e3e506b5c,T的类型与List8742468051c85b06f0a0af9e3e506b5c的类型一样
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(Predicate8742468051c85b06f0a0af9e3e506b5c match);
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之后的元素。
List8742468051c85b06f0a0af9e3e506b5c 是一个泛型链表...T表示节点元素类型
比如
Listbd43222e33876353aff11e13a7dc75f6 intList;表示一个元素为int的链表
intList.Add(34); //添加
intList.Remove(34);//删除
intList.RemoveAt(0); //删除位于某处的元素
intList.Count; //链表长度
还有Insert,Find,FindAll,Contains等方法,也有索引方法 intList[0] = 23;
1.减少了装箱拆箱
2.便于编译时检查数据类型
Lista87fdacec66f0909fc0757c19f2d2b1d 就相当于 System.Collections命名空间里面的List
更多C# List8742468051c85b06f0a0af9e3e506b5c的用法小结相关文章请关注PHP中文网!