>  기사  >  백엔드 개발  >  C# List 사용법 요약

C# List 사용법 요약

高洛峰
高洛峰원래의
2017-01-19 11:46:531525검색

소유 네임스페이스: System.Collections.Generic
공용 클래스 List: IList, ICollection, IEnumerable, IList, ICollection, IEnumerable

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 testList =new List(IEnumerable 컬렉션)
🎜>목록 만들기

예: 컬렉션을 매개변수로 사용:

string[] temArr = { "Ha", "Hunter", "Tom", "Lily", "Jay", "Jim" , "Kuku", "Locu" };

List testList = new List(temArr);



요소 추가:

1. Add(T 항목) 요소 추가

예: mList.Add("John");

2. List.AddRange(IEnumerable8742468051c85b06f0a0af9e3e506b5c collection) 요소 세트 추가

예:

string[] temArr = { "Ha","Hunter", "Tom", "Lily", "Jay", "Jim", "Kuku" , "Locu" };

mList.AddRange(temArr);


3. Insert(int index, T item); 인덱스 위치에 요소를 추가합니다

예: mList.Insert (1, "Hei") ;

목록의 요소 탐색:

foreach (T element in mList)  T的类型与mList声明时一样
{
    Console.WriteLine(element);
}

예:

foreach (string s in mList)
{
    Console.WriteLine(s);
}

요소 삭제:

1. List.Remove(T 항목)는 값을 삭제합니다

예: mList.Remove("Hunter");

List.RemoveAt(int index);

예: 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.FindLast 方法:搜索与指定谓词所定义的条件相匹配的元素,并返回整个 List 中的最后一个匹配元素。 
public T FindLast(Predicate8742468051c85b06f0a0af9e3e506b5c match);


用法与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中文网!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.