C#数组查找与排序

数组查找对象的方法一种是查找对象,一种是查找值

 

1. 查找对象

 

Person p1 = new Person("名字1", 18);

Person p2 = new Person("名字1", 19);

Person p3 = new Person("名字1", 20);

 

Person[] persons = { p1, p2, p3 };

 

// 查找p2所在数组中的位置

Array.IndexOf<Person>(persons, p2);

 

 

2. 查找值

 

Person p1 = new Person("名字1", 18);

Person p2 = new Person("名字1", 19);

Person p3 = new Person("名字1", 20);

 

Person[] persons = { p1, p2, p3 };

 

Person p4 = new Person(p2.Name, p2.Age);

 

// 查找数组中与p4相同的元素所在的位置

Array.IndexOf<Person>(persons, p4);

但是,这种方法必需使Person重载Object Equals 比较方法

 

public override bool Equals(object obj)

{

    Person person = obj as Person;

    if (person == null) return false;

    return (this.name == person.name && this.age == person.age);

}

 

 

第二种按对象的值查找的方法

 

实现IComparabler接口

 

public int CompareTo(object obj)

{

    Person person = obj as Person;

    if (person == null)

        throw new Exception("The method or operation is not implemented.");

 

    // 先从年龄开始比较

    int ageResult = this.age.CompareTo(person.age);

 

    if (ageResult == 0)

    {

        // 如果年龄相等在坐姓名比较

        return this.name.CompareTo(person.name);

    }

    else

    {

        return ageResult;

    }

}

实现了IComparable接口后就可以使用Array.BinarySearch()进行查找了

 

// 得到 person persons 中有相同值的下标

// 如果多个相同的值,BinarySearch将取最后

// 一个有相同值的数组下标

Array.BinarySearch<Person>(persons, person);

:使用Array.BinarySeach必须操作一个排序好的数组

 

3. 排序

 

只要对象实现了IComparable接口,就可以使用Array中静态的方法Sort进行排序

 

// 必需使比较的对象实现IComparable接口

Array.Sort<Person>(persons);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值