C# ArrList集合排序

C# ArrList集合排序
作者:秋名
撰写时间:2020 年05 月27日
技术点:ArrList集合排序的两种方法,一种是Sort(),一种是自定义方法。继承接口IComparable/IComparer实现。

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ArrayList集合
{
    class Program
    {
        static void Main(string[] args)
        {
           
            #region ArrayLiast排序方法
            //数字排序
            ArrayList arr = new ArrayList(new int[] { 1,2,98,78,56,26,5,8});
            //默认升序
            arr.Sort();
            //没有降序,但是微软提供顺序反转
            arr.Reverse();
            for (int i = 0; i < arr.Count; i++)
            {
                Console.WriteLine(arr[i]);
            }
			
    Console.WriteLine("============================分界线=============================");
  		  //字符串排序
            ArrayList arr1 = new ArrayList(new string[] { "h1", "xdd", "awe", "frg", "rew", "qscv", "uyt" });
            arr1.Sort();
            for (int i = 0; i < arr1.Count; i++)
            {
                Console.WriteLine(arr1[i]);
            }
 Console.WriteLine("============================分界线=============================");
 		//接口排序
     ArrayList array = new ArrayList();
            Person p1 = new Person();
            p1.Name="qmt";
            p1.Age=22;
            p1.Email="1385@qq.com";

            Person p2 = new Person();
            p2.Name = "wer";
            p2.Age = 21;
            p2.Email = "1385@qq.com";

            Person p3 = new Person();
            p3.Name = "xcv";
            p3.Age = 20;
            p3.Email = "1385@qq.com";

            Person p4 = new Person();
            p4.Name = "ghj";
            p4.Age = 28;
            p4.Email = "1385@qq.com";

            array.Add(p1);
            array.Add(p2);
            array.Add(p3);
            array.Add(p4);
            array.Sort();//进行排序需要继承接口
            Console.WriteLine(array.Count);
            for (int i = 0; i < array.Count; i++)
            {
                Console.WriteLine(((Person)array[i]).Name);
            }
 Console.WriteLine("============================分界线=============================");
		 //使用接口IComparer进行比较
    ArrayList array = new ArrayList();
            Person p1 = new Person();
            p1.Name="qmtzcd";
            p1.Age=22;
            p1.Email="1385@qq.com";

            Person p2 = new Person();
            p2.Name = "werhellowe";
            p2.Age = 21;
            p2.Email = "1385@qq.com";

            Person p3 = new Person();
            p3.Name = "xcvsd";
            p3.Age = 20;
            p3.Email = "1385@qq.com";

            Person p4 = new Person();
            p4.Name = "ghj";
            p4.Age = 28;
            p4.Email = "1385@qq.com";

            array.Add(p1);
            array.Add(p2);
            array.Add(p3);
            array.Add(p4);
            //直接调用Sort()方法是使用Person类型实现了IComParble接口的默认方式来排序
            // array.Sort();
            array.Sort(new PersonSortByNameLengthAsc());
            Console.WriteLine(array.Count);
            for (int i = 0; i < array.Count; i++)
            {
                Console.WriteLine(((Person)array[i]).Name);
            }
            #endregion
            Console.ReadKey();
        }
    }
   //继承接口 IComparable
    public class Person:IComparable
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public string Email { get; set; }
        //实现接口
        public int CompareTo(object obj)
        {
            Person p = obj as Person;
            if (p != null)
            {
                return this.Age - p.Age;
            }
            return 0;
        }
    }
	//继承接口IComparer,比较两个对象的方法
	  public class PersonSortByNameLengthAsc : IComparer
    {
        public int Compare(object x, object y)
        {
            Person p1 = x as Person;
            Person p2 = y as Person;
            return p1.Name.Length - p2.Name.Length;
        }
    }
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值