上一篇:
C#,入門(mén)教程(19)——循環(huán)語(yǔ)句(for,while,foreach)的基礎(chǔ)知識(shí)https://blog.csdn.net/beijinghorn/article/details/124060844
List顧名思義就是數(shù)據(jù)列表,區(qū)別于數(shù)據(jù)數(shù)組(array)。
List比數(shù)組提供強(qiáng)大得多!多!多!多!的功能,能存儲(chǔ)更多!多!多!類(lèi)型的數(shù)據(jù)(泛型)!
List是更多數(shù)據(jù)集合(序表SortedList、鏈表LinkedList、堆棧Stack、隊(duì)列Quene及哈希表Hashtable等)的基礎(chǔ)。
因而,可以說(shuō):無(wú)列表,不編程!
一、命名空間
using System.Text;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
如果代碼提示錯(cuò)誤信息,先添加上面的這些命名空間。
if (入門(mén) List )
{
?? ?本文就夠了。
}
else if (想精通 List )
{
?? ?請(qǐng)掌握 Linq 與 Lamda 表達(dá)式的基礎(chǔ)知識(shí)。
}
else?
{
?? ?關(guān)注我!無(wú)窮知識(shí)傳給你!
}
二、List的聲明(定義)
1、List聲明
語(yǔ)法:
List<T> tList = new List<T>(); ?
注:<T>即為泛型,可以理解為任意的數(shù)據(jù)類(lèi)型(數(shù)值、類(lèi)、結(jié)構(gòu)體、object及其他數(shù)據(jù)體)。
實(shí)例:
List<string> stringList = new List<string>();
List<Classmate>classmateList = new List<Classmate>();
2、List初值
可以在聲明一個(gè)List的同時(shí),給出初值。
List<string> stringList = new List<string>() {?
?? ?"Tom", "Jerry", "!"?
};
List<Classmate> classmateList = new List<Classmate>() {
?? ?new Classmate("1", "Tom"),?
?? ?new Classmate("2", "Jerry")
};
3、數(shù)組array轉(zhuǎn)為L(zhǎng)ist
語(yǔ)法:
List<T> tList =new List<T> (數(shù)據(jù)集);
實(shí)例:
string[] stringArray = {?
?? ?"Tom", "Jerry", "!" ?
};
List<string> stringList = new List<string>(stringArray);
//或者(Linq方法):
List<string> stringList = stringArray.ToList();
//反之:
string[] stringArray = stringList.ToArray();
三、List的基礎(chǔ)功能與常用操作
1、List的數(shù)據(jù)總數(shù)
語(yǔ)法:int List.Count()
實(shí)例:int count = stringList.Count();
2、清空List
語(yǔ)法:void List.Clear()?
實(shí)例:stringList.Clear();
必要的時(shí)候清空列表是好習(xí)慣!
3、List的遍歷
語(yǔ)法:
// T的類(lèi)型與mList聲明時(shí)一樣
string result = "";
foreach (T element in tList) ?
{
? ? result += element.ToString();
}
實(shí)例(制作同學(xué)花名冊(cè)):
List<Classmate> classmateList = new List<Classmate>();
//(因個(gè)人隱私需要,此處又省略。。。)
StringBuilder sb = new StringBuilder();
sb.AppendLine("<table>");
sb.AppendLine("<tr>");
sb.AppendLine("<td>序號(hào)</td>");
sb.AppendLine("<td>昵稱(chēng)</td>");
sb.AppendLine("<td>姓名</td>");
sb.AppendLine("<td>手機(jī)號(hào)</td>");
sb.AppendLine("<td>郵箱</td>");
sb.AppendLine("</tr>");
foreach (Classmate mo in classmateList)
{
? ? sb.AppendLine("<tr>");
? ? sb.AppendLine("<td>" + mo.Id + "</td>");
? ? sb.AppendLine("<td>" + mo.Nickname + "</td>");
? ? sb.AppendLine("<td>" + mo.Name + "</td>");
? ? sb.AppendLine("<td>" + mo.Mobile + "</td>");
? ? sb.AppendLine("<td>" + mo.Email + "</td>");
? ? sb.AppendLine("</tr>");
}
sb.AppendLine("</table>");
4、添加一個(gè)或一組數(shù)據(jù)
語(yǔ)法:List.Add(T item)
語(yǔ)法:List.AddRange(數(shù)據(jù)集合) ??
注意:狗尾續(xù)貂,數(shù)據(jù)添加在尾部;
實(shí)例:
List<string> stringList = new List<string>();
stringList.Add("Tom");
//或:
string[] stringArray = {?
?? ?"Tom", "Jerry", "!" ?
};
List<string> firstStringList = new List<string>();
firstStringList.AddRange(stringArray);
//又或:
List<string> secondStringList = new List<string>();
//(此處可能省略幾句話(huà)。。。)
stringList.AddRange(secondStringList);
5、按指定位置添加數(shù)據(jù)
語(yǔ)法: Insert(int index, T item);?
實(shí)例:
List<string> stringList = new List<string>();
stringList.Insert(1, "House");
6、刪除元素
① 按數(shù)據(jù)刪除
語(yǔ)法:List.Remove(T item)
② 按位置刪除
語(yǔ)法:List.RemoveAt(int index); ??
③ 批量刪除
語(yǔ)法:List.RemoveRange(int index, int count);
④ 按條件刪除
語(yǔ)法:List.RemoveAll(Predicate<T> match)
方法:刪除滿(mǎn)足條件的所有元素。
實(shí)例:
stringList.Remove("Tom");
stringList.RemoveAt(0);
stringList.RemoveRange(1, 2);
//(Lamda表達(dá)式)
stringList.RemoveAll(t => t.Id > 10);
7、判斷List是否包含某個(gè)數(shù)據(jù)?
語(yǔ)法:List.Contains(T item) ??
返回:true 或 false
實(shí)例:
string result = "";
if (mList.Contains("Tom"))
{
? ? result = "Tom is in the list";
}
else
{
? ? result = "Tom is not in the list";
}
四、List的高級(jí)應(yīng)用
1、List排序
語(yǔ)法:List.Sort()
按數(shù)據(jù)的默認(rèn)升序排序;
stringList.Sort();
這個(gè)實(shí)際上沒(méi)有什么用處,強(qiáng)烈推薦下面的語(yǔ)法:
語(yǔ)法:
tList.Sort(delegate(T a, T b) {
?? ?return Comparer<long>.Default.Compare(a.Hashcode(), b.Hashcode());
});
實(shí)例(正序):
classmateList.Sort(delegate(Classmate a, Classmate b)) {
?? ?if(a.Id > b.Id) {
?? ??? ?return 1;
?? ?}
?? ?else {
?? ??? ?return -1;
?? ?}
});
//實(shí)例(倒序):
classmateList.Sort(delegate(Classmate a, Classmate b)) {
?? ?if(b.Id > a.Id) {
?? ??? ?return 1;
?? ?}
?? ?else {
?? ??? ?return -1;
?? ?}
});
//實(shí)例(倒序,簡(jiǎn)約寫(xiě)法):
classmateList.Sort(delegate(Classmate a, Classmate b)) {
?? ?return ((b.Id > a.Id) ? 1 : -1);
});
//或者,實(shí)例(倒序,簡(jiǎn)約寫(xiě)法):
classmateList.Sort(delegate(Classmate a, Classmate b)) {
?? ?return Comparer<int>.Default.Compare(b.Id, a.Id);
});
列表的排序是使用頻率非常高的功能,應(yīng)該熟練掌握!
2、List反轉(zhuǎn)
語(yǔ)法:List.Reverse()
3、List檢索與批量檢索
① List.Find方法:檢索滿(mǎn)足條件的第一個(gè)元素;?
語(yǔ)法:public List<T> Find(Predicate<T> match);
② List.FindAll方法:檢索滿(mǎn)足條件的所有元素;?
語(yǔ)法:public List<T> FindAll(Predicate<T> match);
③ List.Where方法:檢索滿(mǎn)足條件的所有元素;(類(lèi)似FindAll)。
語(yǔ)法:public List<T> Where(Predicate<T> match);
④ List.FindLast 方法:檢索滿(mǎn)足條件的最后一個(gè)元素;?
語(yǔ)法:public T FindLast(Predicate<T> match);
實(shí)例(推薦使用Lamda表達(dá)式):
List<Classmate> someClassmateList = classmateList.Find(t => t.Mobile.StartsWith("139"));
List<Classmate> someClassmateList = classmateList.FindAll(t => t.Mobile.StartsWith("139"));
List<Classmate> someClassmateList = classmateList.Where(t => t.Mobile.StartsWith("139"));
List<Classmate> someClassmateList = classmateList.FindLast(t => t.Mobile.StartsWith("139"));
4、List的片段提取
語(yǔ)法:List.Take(int number);
方法:獲得前number個(gè)數(shù)據(jù),構(gòu)成一個(gè)數(shù)據(jù)子集;
List<Classmate> top3List = classmateList.Take(3);
一般先排序,再提?。?/strong>
?——————————————————————
POWER BY 315SOFT.COM &
TRUFFER.CN
下一篇:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-794698.html
?C#,入門(mén)教程(21)——命名空間(namespace)與程序結(jié)構(gòu)的基礎(chǔ)知識(shí)https://blog.csdn.net/beijinghorn/article/details/124140653文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-794698.html
到了這里,關(guān)于C#,入門(mén)教程(20)——列表(List)的基礎(chǔ)知識(shí)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!