集合-列表

.net framework为动态列表提供了泛型类List<T>.继承了6个接口,其定义如下:

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

            List<int> list = new List<int>(8); //创建列表

            Console.WriteLine(list.Count.ToString());//列表元素数量

            Console.WriteLine(list.Capacity.ToString());//列表容量

            list.TrimExcess();// 去除不需要的容量,当数量达到容量90%时,不处理。

 

            var liststrs = new List<string> { "bj", "sh" };//可定义时初始化值

            liststrs.Add("wuhan");//Add添加元素

            liststrs.Insert(1, "tj");//Insert插入元素

            liststrs.ForEach(Console.WriteLine);//此方法相当于foreach循环

            liststrs.RemoveAt(0);//移除

        Console.WriteLine(liststrs[0]);//通过下标访问元素

具体例子代码:

namespace ConsoleApplication1

{

    public class Racer : IFormattable, IComparable<Racer>

    {

        public int ID { get; private set; }

        public string FirstName { get; set; }

        public string LastName { get; set; }

        public string Country { get; set; }

        public int Winns { get; set; }

 

        public Racer(int id, string firstname, string lastname, string country = null, int winns = 0)

        {

            this.ID = id;

            this.FirstName = firstname;

            this.LastName = lastname;

            this.Country = country;

            this.Winns = winns;

        }

        public override string ToString()

        {

            return string.Format("{0}-{1}", FirstName, LastName);

        }

        public string ToString(string format, IFormatProvider formProvider)

        {

            if (format == null)

            {

                format = "N";

            }

            switch (format.ToUpper())

            {

                case "N":

                    return ToString();

                case "F":

                    return FirstName;

                case "L":

                    return LastName;

                case "W":

                    return string.Format("{0},win:{1}", ToString(), Winns);

                case "C":

                    return string.Format("{0},country:{1}", ToString(), Country);

                case "A":

                    return string.Format("{0},win:{1},country:{2}", ToString(), Winns, Country);

                default:

                    throw new FormatException(string.Format(formProvider, "字母{0}未定义", format));

            }

        }

 

        public string Tostring(string format)

        {

            return ToString(format, null);

        }

 

        public int CompareTo(Racer other)

        {

            int compare = this.LastName.CompareTo(other.LastName);

            if (compare == 0)

            {

                compare = this.FirstName.CompareTo(other.FirstName);

            }

            return compare;

        }

    }

 

    public class RacerCompare : IComparer<Racer>

    {

        public enum RacerType

        {

            firstname,

            lastname,

            country,

            winns

        }

        private RacerType racerType;

        public RacerCompare(RacerType racertype)

        {

            this.racerType = racertype;

        }

 

        public int Compare(Racer x, Racer y)

        {

            if (x == null)

            {

                throw new ArgumentNullException("x");

            }

            if (y == null)

            {

                throw new ArgumentNullException("y");

            }

            int result;

            switch (racerType)

            {

                case RacerType.firstname:

                    result = x.FirstName.CompareTo(y.FirstName);

                    break;

                case RacerType.lastname:

                    result = x.LastName.CompareTo(y.LastName);

                    break;

                case RacerType.country:

                    result = x.Country.CompareTo(y.Country);

                    break;

                case RacerType.winns:

                    result = x.Winns.CompareTo(y.Winns);

                    break;

                default:

                    throw new ArgumentException("未定义的类型");

            }

            return result;

        }

    }

 

    public class Person

    {

        private string name;

        public Person(String name)

        {

            this.name = name;

        }

        public override string ToString()

        {

            return name;

        }

    }

    class Program

    {

        static void Main(string[] args)

        {

            Racer zhang = new Racer(1, "zhang", "gong", "shangxiu", 0);

            Racer xi = new Racer(2, "xi", "feng", "china", 3);

            Racer mao = new Racer(3, "mao", "tai", "zhongguo", 6);

            List<Racer> recers = new List<Racer>(10) { zhang, xi, mao };

            recers.Add(new Racer(7, "wu", "liangye", "tangchao", 9));

            recers.AddRange(new Racer[] {

            new Racer(9, "du", "kang", "hanchao", 12),

            new Racer(10,"qing","shui","zhonghua",100)});

 

            recers.Sort(new RacerCompare(RacerCompare.RacerType.lastname));

            recers.ForEach(Console.WriteLine);

 

            List<Person> persons = recers.ConvertAll<Person>(p => new Person(p.FirstName + " " + p.LastName));

            persons.ForEach(Console.WriteLine);

            Console.Read();

        }

    }

}

原文地址:https://www.cnblogs.com/hometown/p/3205263.html