问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c#中LIST的应用实例谁给个加注释的!灰常感谢!

发布网友 发布时间:2022-05-17 14:57

我来回答

2个回答

热心网友 时间:2023-09-02 02:57

所属命名空间:System.Collections.Generic

public class List<T> : IList<T>, ICollection<T>, IEnumerable<T>, IList, ICollection, IEnumerable

List<T>类是 ArrayList 类的泛型等效类。该类使用大小可按需动态增加的数组实现 IList<T> 泛型接口。

泛型的好处: 它为使用c#语言编写面向对象程序增加了极大的效力和灵活性。不会强行对值类型进行装箱和拆箱,或对引用类型进行向下强制类型转换,所以性能得到提高。

性能注意事项:

在决定使用IList<T> 还是使用ArrayList类(两者具有类似的功能)时,记住IList<T> 类在大多数情况下执行得更好并且是类型安全的。

如果对IList<T> 类的类型 T 使用引用类型,则两个类的行为是完全相同的。但是,如果对类型 T 使用值类型,则需要考虑实现和装箱问题。

“添加到 ArrayList 中的任何引用或值类型都将隐式地向上强制转换为 Object。如果项是值类型,则必须在将其添加到列表中时进行装箱操作,在检索时进行取消装箱操作。强制转换以及装箱和取消装箱操作都会降低性能;在必须对大型集合进行循环访问的情况下,装箱和取消装箱的影响非常明显。”

1、 List的基础、常用方法:

声明:

1、List<T> mList = new List<T>();

T为列表中元素类型,现在以string类型作为例子

E.g.: List<string> mList = new List<string>();

2、List<T> testList =new List<T> (IEnumerable<T> collection);

以一个集合作为参数创建List

E.g.:

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

List<string> testList = new List<string>(temArr);

添加元素:

1、 List. Add(T item) 添加一个元素

E.g.: mList.Add("John");

2、 List. AddRange(IEnumerable<T> collection) 添加一组元素

E.g.:

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

mList.AddRange(temArr);

3、Insert(int index, T item); 在index位置添加一个元素

E.g.: mList.Insert(1, "Hei");

遍历List中元素:

foreach (T element in mList) T的类型与mList声明时一样

{

Console.WriteLine(element);

}

E.g.:

foreach (string s in mList)

{

Console.WriteLine(s);

}

删除元素:

1、 List. Remove(T item) 删除一个值

E.g.: mList.Remove("Hunter");

2、 List. RemoveAt(int index); 删除下标为index的元素

E.g.: mList.RemoveAt(0);

3、 List. RemoveRange(int index, int count);

从下标index开始,删除count个元素

E.g.: mList.RemoveRange(3, 2);

判断某个元素是否在该List中:

List. Contains(T item) 返回true或false,很实用

E.g.:

if (mList.Contains("Hunter"))

{

Console.WriteLine("There is Hunter in the list");

}

else

{

mList.Add("Hunter");

Console.WriteLine("Add Hunter successfully.");

}

给List里面元素排序:

List. Sort () 默认是元素第一个字母按升序

E.g.: mList.Sort();

给List里面元素顺序反转:

List. Reverse () 可以与List. Sort ()配合使用,达到想要的效果

E.g.: mList.Sort();

List清空:List. Clear ()

E.g.: mList.Clear();

获得List中元素数目:

List. Count () 返回int值

E.g.:

int count = mList.Count();

Console.WriteLine("The num of elements in the list: " +count);

2、 List的进阶、强大方法:

举例用的List:

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

mList.AddRange(temArr);

List.Find 方法:搜索与指定谓词所定义的条件相匹配的元素,并返回整个 List 中的第一个匹配元素。

public T Find(Predicate<T> match);

Predicate是对方法的委托,如果传递给它的对象与委托中定义的条件匹配,则该方法返回 true。当前 List 的元素被逐个传递给Predicate委托,并在 List 中向前移动,从第一个元素开始,到最后一个元素结束。当找到匹配项时处理即停止。

Predicate 可以委托给一个函数或者一个拉姆达表达式:

委托给拉姆达表达式:

E.g.:

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(Predicate<T> match);

用法与List.Find相同。

List.TrueForAll方法: 确定是否 List 中的每个元素都与指定的谓词所定义的条件相匹配。

public bool TrueForAll(Predicate<T> 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 List<T> FindAll(Predicate<T> 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行返回值为IEnumetable<T>,T的类型与List<T>的类型一样

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<T> 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之后的元素。

热心网友 时间:2023-09-02 02:58

我靠 楼上你还让别人怎么写?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
膀胱癌医生要为什么要检查上尿路? 游览器书签怎样添加到手机桌面 玫瑰花是早上开还是晚上开 玫瑰是晚上开花吗 左拾遗是什么官左拾遗的解释 怎样炖羊肉好吃又烂 怎样炖羊肉软烂无膻味好吃 ...之心度君子之腹的意思以小人之心度君子之腹的解释以小人之心度君子... 以小人之心度君子之腹什么意思以小人之心度君子之腹出处介绍 苹果macbook pro开机音乐是什么 苹果台式电脑声音苹果电脑开机声音怎么设置 男生17岁睾丸有疝气有什么危害 塑料水箱长绿毛怎么处理? 女孩子说脏话 小孩睾丸有疝气,一定要手术吗 怎么看待女生讲脏话这件事呢? 疝气是怎么回事呢? 卫生间塑料水箱上的黑斑怎么去除? 为什么现在有的女生嘴爱说脏话? 水箱有异味怎么去除 睾丸疝气睾丸疝气,具体手术要多久 我右侧睾丸有疝气可不手术吗 女生经常说脏话说明她不是好女孩吗? 孩子睾丸有疝气会是什么症状 汽车水箱多久清洗一次?怎么清洗? 家乡的变化300子 税务上餐饮费和营业额之间的报销比例 什么是网上开发客户的“偏方”? 仙本纯良 请问餐饮费的扣除比例 睾丸疝气有什么症状? 老人睾丸疝气是怎么得的 一个女孩说脏话怎么样? 请问下疝气主要是睾丸疼痛外 还会影响什么 一个女生开始说骂人的脏话是什么原因? 孩子睾丸有疝气,什么时候适合手术? 九阳K780水箱有塑料味吗? list做函数参数,类型不确定怎么声明 婴儿睾丸疝气会自己好的吗 你怎样看待一个说脏话的女生 疝气会不会长到睾丸上 如果看待粗鲁,满口脏话的女生? 怎样判断是疝气,睾丸大小正常是是否能检 疝气 自己以前一直没注意,直到现在才发现在*哪里有一团东西,应该是疝气。从小到大都有,没有疼痛 怎样看待一个说脏话的女生? 如果一个女孩说脏话是不是就代表她一定素质低呢? 为什么有些女孩子会满嘴脏话? 一个女人对我说脏话这是什么意思 为什么现在女生都喜欢说脏话? 女生说脏话,就代表她是个坏女孩子吗? 女生讲脏话好吗