C# 数组查找与排序实现代码_实用技巧

1. 查找对象

复制代码 代码如下:

Person p1 = new Person( " http://www.my400800.cn " , 18 );
Person p2 = new Person( " http://www.my400800.cn " , 19 );
Person p3 = new Person( " http://www.my400800.cn " , 20 );
Person[] persons = ... { p1, p2, p3 } ;
// 查找p2所在数组中的位置
Array.IndexOf < Person > (persons, p2);

2. 查找值

复制代码 代码如下:

Person p1 = new Person( " http://www.my400800.cn " , 18 );
Person p2 = new Person( " http://blog.my400800.cn " , 19 );
Person p3 = new Person( " http:// blog.my400800.cn/400电话 " , 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);

时间: 2024-11-02 05:13:32

C# 数组查找与排序实现代码_实用技巧的相关文章

ASP.NET数组删除重复值实现代码_实用技巧

根据这段代码,自己编写了一个小程序作为代码资料参考,方便以后可以直接拿来用,不需要网上找.如果你觉得还不错的话,就把它收藏起来吧! 1.前台代码: <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>数组删除重复值</title> </head> <body> <form id="for

MVC4制作网站教程第四章 部分栏目功能实现代码_实用技巧

序 一.用户 二.用户组 三.栏目 3.1添加栏目 3.2浏览栏目 3.3更新栏目 3.4删除栏目 3.5前台栏目浏览 -- 栏目模型: 模型应有一下字段:栏目名称,父栏目id,栏目类型,内容模型,栏目视图,内容视图,链接地址,栏目排序.暂时先想到这么多,先这这么写着.  栏目名称和父栏目id不用说很简单.  栏目类型有三种:普通栏目-就是一般的栏目:单页栏目--是指栏目就是一个页面,像公司介绍,联系地址等:外部链接-是指栏目点一下就跳转到一个链接.  内容模型--是指栏目为普通栏目时,栏目的内

MVC4制作网站教程第二章 部分用户功能实现代码_实用技巧

用户部分要实现的功能有: 序 一.用户  1.1用户注册  1.2用户登录  1.3修改密码  1.4修改资料 要实现这些目的首先新建用户(Model)模型 /// <summary> /// 用户模型 /// </summary> public class User { [Key] public int UserId { get; set; } /// <summary> /// 用户组Id /// </summary> [Display(Name=&qu

asp.net DataGrid 中文字符排序的实现代码_实用技巧

废话不多说,看例子: 复制代码 代码如下: <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" fontSize="12">     <mx:Script>         <!--[CDA

asp 用InStr查找特定字符串的代码_应用技巧

今天才发现这个函数的作用,原来可以查找特定的字符或者字符串. 下面是我写的简单例子: <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> <% Response.CodePage=65001%>  <% Response.Charset="UTF-8" %>  <% dim content_text,searchword_text 'content是内容,searchwor

asp实现取得数组中的最大值的代码_应用技巧

<% '****************************** '函数:GetMax(str) '参数:str,待处理的数字数组,以,分隔多了数字 '作者:阿里西西 '日期:2007/7/12 '描述:取得数组中的最大值 '示例:<%=GetMax("360,120,5,600,32")%> '****************************** function GetMax(str) num=split(str,",") max=

asp.net通过js实现Cookie创建以及清除Cookie数组的代码_实用技巧

复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="BLTZ.aspx.cs" Inherits="BLTZ" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1

js table排序类代码_应用技巧

 名称 / 类型 上传时间 大小 new.rar 2008-9-12 8:51:09 423.09 K TagControl.js 2008-9-23 11:26:57 1.35 K Scroller.js 2008-9-23 11:26:57 2.5 K AlertBox.js 2008-9-23 11:26:57 3.48 K 1.htm 2008-10-4 20:21:54 11.13 K 4.htm 2008-10-4 20:21:54 351 b news.xml 2008-10-4

最详细的ASP.NET微信JS-SDK支付代码_实用技巧

本文实例为大家分享了微信JS SDK支付的具体代码,供大家参考,具体内容如下 模型层实体类: public class JsEntities { /// <summary> /// 公众号id /// </summary> public string appId { get; set; } /// <summary> /// 时间戳 /// </summary> public string timeStamp { get; set; } /// <su