關於List集合的一些基本操作
阿新 • • 發佈:2018-11-11
宣告需要操作的Student類以及要轉換的Person類
public class Student:IFormattable,IComparable<Student> { public int ID { get; set; } public string Name { get; set; } public double Score { get; set; } public Student(int id,string name,double score) { this.ID = id; this.Name = name; this.Score = score; } public override string ToString() { return string.Format( "Name:{0} ",Name); } public string ToString(string format, IFormatProvider formatProvider) { if (format==null) format = "N"; switch (format.ToUpper()) { case "N": //Name return ToString(); case "NI": //Name ID return string.Format("Name:{0},ID:{1}",Name,ID); case "A": //Name ID Score return string.Format("Name:{0},ID:{1},Sceor:{2}", Name, ID, Score); default: throw new FormatException(string.Format(formatProvider, "Format{0} is not suported", format)); } } //實現排序功能,需要實現此方法,預設用名排序 public int CompareTo(Student other) { int compare = this.Name.CompareTo(other.Name); if (compare==0) { return this.Score.CompareTo(other.Score); } return compare; } } public class Person { public int Id; public string Name; public Person(string name,int id) { this.Name = name; this.Id = id; } }
基本操作命令
var XM = new Student(001,"小明",80); var XG = new Student(002,"小剛",85); var stus = new List<Student>() { XM, XG }; stus.Add(new Student(003,"小紅",90)); //通過AddRange新增多個 stus.AddRange(new Student[] { new Student(004,"小芳",85),new Student(005,"小麗",82)}); //初始化時直接新增多個例項 //var stus = new List<Student>(new Student[] { new Student(004, "小芳", 85), new Student(005, "小麗", 82) }); //通過Insert新增 //stus.Insert(2,new Student(002,"小李",58)); //通過InsertRange在指定索引處新增 //stus.InsertRange(2,new Student[] { new Student(004, "小芳", 85), new Student(005, "小麗", 82) }); //通過所引起訪問 Student stu1 = stus[2]; //統計列表的數量 //Console.WriteLine(stus.Count); //通過For迴圈列印列表 //for (int i = 0; i < stus.Count; i++) //{ // Console.WriteLine(stus[i]); //} //通過foreach列印 //foreach (Student stu in stus) //{ // Console.WriteLine(stu); //} //通過ForEach列印 stus.ForEach(Console.WriteLine); //可以通過更改A來控制顯示的資訊 stus.ForEach(r => Console.WriteLine("{0:A}",r)); //根據索引刪除元素 //stus.RemoveAt(3); //根據物件移除 //stus.Remove(stus[2]); //stus.Remove(XG); //int index1 = stus.IndexOf(); //通過物件某個屬性查詢匹配物件的索引 int index2 = stus.FindIndex(r => r.ID == 003); //通過物件某個屬性查詢所有匹配物件中的第一個物件 var stu2 = stus.FindIndex(r => r.ID == 003); //通過物件某個屬性查詢所有匹配物件中的最後一個物件 var stu3 = stus.FindLast(r => r.ID == 003); //只有集合中的元素實現了Icomparable介面,才能使用不帶引數的Sort()方法 //查詢符合條件的例項集合 List<Student> stus1 = stus.FindAll(r=>r.Score>90); //通過reverse()方法可以逆轉序列 stus.Reverse(); //根據分數對列表排序 stus.Sort((s1,s2)=>s1.Score.CompareTo(s2.Score)); //將student列表轉成erson列表,注意兩個類之間屬性的轉換關係 List<Person> persons = stus.ConvertAll(s=>new Person(s.Name,s.ID)); persons.ForEach(s=>Console.WriteLine(s.Name+s.Id));