C# 数组查找与排序实现代码
程序员文章站
2024-03-09 17:27:05
1. 查找对象 复制代码 代码如下: person p1 = new person( " http://www.my400800.cn " , 18 ); person p...
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);
复制代码 代码如下:
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);
上一篇: Java编程中实现归并排序算法的实例教程
下一篇: 浅析Java编程中枚举类型的定义与使用