數組尋找對象的方法一種是尋找對象,一種是尋找值
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);