List排序

来源:互联网 发布:wow.js 滚动时不现实 编辑:程序博客网 时间:2024/06/13 13:34

List三种排序

第一种

 class Student : IComparable<Student>
    {
        private string name;
        private int fenshu;
        public Student(string name, int fenshu)
        {
            this.name = name;
            this.fenshu = fenshu;
        }
        public string Name
        {
            get
            {
                return name;
            }
            set
            {
                name = value;
            }
        }
        public int Fenshu
        {
            get
            {
                return fenshu;
            }
            set
            {
                fenshu = value;
            }
        }
        public override string ToString()
        {
            return "Name:" + name + "   Fenshu:" + fenshu;
        }
        public int CompareTo(Student other)
        {
            return other.Fenshu.CompareTo(Fenshu);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            List<Student> list = new List<Student>();
            list.Add(new Student("张三", 88));
            list.Add(new Student("李四", 77));
            list.Add(new Student("王二", 98));
            list.Add(new Student("小红", 96));
            list.Add(new Student("小明", 66));
            Console.WriteLine("排序前: ");
            foreach (var a in list)
            {
                Console.WriteLine(a);
            }
            list.Sort();
            //list.Sort(new CarComparer());
            Console.WriteLine("排序后: ");
            foreach (var a in list)
            {
                Console.WriteLine(a);
            }
        }
    }


第二种

class Car
    {
        private string name;
        private int speed;
        public Car(string name, int speed)
        {
            this.name = name;
            this.speed = speed;
        }
        public string Name
        {
            get
            {
                return name;
            }
            set 
            {
                name = value;
            }
        }
        public int Speed
        {
            get
            {
                return speed;
            }
            set
            {
                speed = value;
            }
        }
        public override string ToString()
        {
            return "Name:" + name  + "   Speed:" +  speed;
        }
    }
    class CarComparer : IComparer<Car>
    {
        public int Compare(Car x, Car y)
        {
            return x.Speed.CompareTo(y.Speed);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            List<Car> list = new List<Car>();
            CarComparer b = new CarComparer();
            list.Add(new Car("BMW320i", 111));
            list.Add(new Car("BMW321i", 112));
            list.Add(new Car("BMW520li", 100));
            list.Add(new Car("BMW521li", 98));
            list.Add(new Car("BMW525li", 130));


            Console.WriteLine("排序前: ");
            foreach (var a in list)
            {
                Console.WriteLine(a);
            }


            list.Sort(b);
            //list.Sort(new CarComparer());
            Console.WriteLine("排序后: ");
            foreach (var a in list)
            {
                Console.WriteLine(a);
            }
        }
    }



第三种

   public class Player
    {
        public string Name { get; set; }
        public int Total { get; set; }
        public Player(string name, int total)
        {
            Name = name;
            Total = total;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            List<Player> lst = new List<Player>();
            lst.Add(new Player("John", 100));
            lst.Add(new Player("Smith", 120));
            lst.Add(new Player("Cait", 97));
            lst.Add(new Player("Irene", 100));
            lst.Add(new Player("Ben", 100));
            lst.Add(new Player("Deniel", 88));
            //lst.Sort(delegate(Player x, Player y)
            //{
            //    return y.Total.CompareTo(x.Total);
            //});
            //lst.Sort(delegate(Player x, Player y)
            //{
            //    return -(x.Total.CompareTo(y.Total));
            //});
            lst.Sort((x,y) =>{
                return x.Total.CompareTo(y.Total);
            });
            foreach (Player a in lst)
            {
                Console.WriteLine(a.Name+"   "+a.Total);
            }
        }
    }


原创粉丝点击