zoukankan      html  css  js  c++  java
  • 通过写一个Demo展示C#中多种常用的集合排序方法

    不多说,程序很简单,就是将集合中的数据进行排序,但使用到的知识点还是比较多的,大牛勿喷,谨献给初学者!直接上程序吧!

    namespace Demo
    {
        /// <summary>
        /// Demo:使用不同排序方法对元素进行排序
        /// </summary>
        class Program
        {
            private static void Main(string[] args)
            {
    
                ArrayList arrayList = Product.GetArrayList();
                List<Product> list = Product.GetList();
    
    
                //1、使用继承IComparer接口的函数来进行排序
                arrayList.Sort(new ProductCompare());
                foreach (Product product in arrayList)
                {
                    Console.WriteLine(product.ToString());
                }
                Console.WriteLine("---------------------------");
    
    
                //2、使用继承IComparer<T>接口的函数来进行排序
                list.Sort(new ProductCompareT());
                foreach (Product product in list)
                {
                    Console.WriteLine(product.ToString());
                }
                Console.WriteLine("---------------------------");
    
                
                //3、使用委托来进行排序
                list.Sort(delegate(Product x, Product y)
                {
                    return x.Price.CompareTo(y.Price);
                });
                foreach (Product product in list)
                {
                    Console.WriteLine(product.ToString());
                }
    
                //4、使用Lambda表达式来进行排序;
                list.Sort((x, y) => x.Price.CompareTo(y.Price));
                foreach (Product product in list)
                {
                    Console.WriteLine(product.ToString());
                }
    
    
                //5、使用扩展方法来进行排序
                foreach (Product product in list.OrderBy(p=>p.Price))
                {
                    Console.WriteLine(product.ToString());
                }
                Console.ReadKey();
            }
        }
    
        public class Product
        {
            public string Name { get; set; }
    
            public decimal Price { get; set; }
    
            public static ArrayList GetArrayList()
            {
                return new ArrayList()
                {
                    new Product {Name = "WindowsPhone", Price = 10m},
                    new Product {Name = "Apple", Price = 20m},
                    new Product {Name = "Android", Price = 5m}
                };
            }
    
            public static List<Product> GetList()
            {
                return new List<Product>()
                {
                    new Product {Name = "WindowsPhone", Price = 10m},
                    new Product {Name = "Apple", Price = 20m},
                    new Product {Name = "Android", Price = 5m}
                };
            }
    
            public override string ToString()
            {
                return String.Format("{0}--{1}", Name, Price);
            }
        }
    
        /// <summary>
        /// 使用IComparer对ArrayList进行排序
        /// 显示实现Compare接口,常用ArrayList类型的集合来调用
        /// </summary>
        public class ProductCompare : IComparer
        {
            public int Compare(object x, object y)
            {
                Product first = x as Product;
                Product second = y as Product;
                if (first != null && second !=null)
                {
                    return first.Price.CompareTo(second.Price);
                }
                else
                {
                    return -1;
                }
            }
        }
    
        /// <summary>
        /// 使用IComparer<Product>进行排序
        /// 显式实现Compare接口,常用List<T>类型的集合来调用
        /// </summary>
        public class ProductCompareT : IComparer<Product>
        {
            public int Compare(Product x, Product y)
            {
                Product first = x as Product;
                Product second = y as Product;
                if (first != null && second != null)
                {
                    return first.Price.CompareTo(second.Price);
                }
                else
                {
                    return -1;
                }
            }
        }
    }
  • 相关阅读:
    JQuery onload、ready概念介绍及使用方法
    jquery获取第几个元素的方法总结
    CSS中隐藏内容的3种方法及属性值
    jQuery获取页面及个元素高度、宽度【转】
    数据仓库原理<2>:数据仓库系统的体系结构
    数据仓库原理<1>:数据库与数据仓库
    题注在论文图表编号中的使用
    初见Python<7>:Python操作mysql
    初见Python<5>:条件、循环和其他语句
    初见Python<4>:字典
  • 原文地址:https://www.cnblogs.com/hippieZhou/p/4528553.html
Copyright © 2011-2022 走看看