查看: 732|回复: 6
|
vb.net built-in classes & built-in interface
[复制链接]
|
|
implements Icomparable, 将出现一个compareTo method,它是怎么和 SortedList 一起用的?
看了一些sample,可是我还是不明白!
谢谢回答 |
|
|
|
|
|
|
|
发表于 4-4-2006 09:17 AM
|
显示全部楼层
你不明白什么地方呀?  |
|
|
|
|
|
|
|

楼主 |
发表于 4-4-2006 12:01 PM
|
显示全部楼层
唯有简单地打一个例子
public class Person
implements Icomparable
private m_sName as string
private m_sFirstName as string
private m_sLastName as string
public ReadOnly property DisplayName() as string
get
return string.format("{0} {1},m_sFirstName,m_sLastName)
end get
end property
public property FirstName() as string
get
return m_sFirstName
end get
set(byval value as string)
m_sFirstName = value
end set
end property
public property LastName() as string
get
return m_sLastName
end get
set(byval value as string)
m_sLastName = value
end set
end property
public function CompareTo(byval obj as object) as integer implements system.icomparable.compareto
dim objOtherPerson as person
if objOtherPerson.LastName < me.LastName then
return -1
elseif objOtherPerson.LastName > me.lastName then
return 1
else
if objOtherPerson.FirstName < me.FirstName then
return - 1
elseif objotherperson.firstName > me.firstName then
return 1
else
return 0
end if
end if
end function
end class
...............................................................
public sub main()
dim objPerson1 as new person()
dim objPerson2 as new person()
din objPerson3 as new person()
dim val1,val2,val3 as integer
val1 = 243 : val2 = 13 : val3 = 34
objPerson1.FirstName = "goat"
objPerson1.LastName = "studio"
objPerson2.FirstName = "ikanyu"
objPerson2.LastName = "chiew"
objPerson3.FirstName = "cari"
objPerson3.LastName = "commy"
dim slpeople as new sortedList()
slpeople.add (objPerson1,val1)
slpeople.add (objPerson2,val1)
slpeople.add (objPerson3,val1)
....
我是想问sortedList是怎么和compareTo一起执行任务的,compareTo return 的value 是 return to sortedlist? 我明白compareTo 可以compare 2 objects, 然后会return 0,1和 -1 to state different condition...有些example 在 compareTo method 里return de value 是算数后算出来的result,这样也能sort, 晕~
希望你明白我问什么  |
|
|
|
|
|
|
|
发表于 5-4-2006 09:03 AM
|
显示全部楼层
我是想问sortedList是怎么和compareTo一起执行任务的,compareTo return 的value 是 return to sortedlist? 我明白compareTo 可以compare 2 objects, 然后会return 0,1和 -1 to state different condition...有些example 在 compareTo method 里return de value 是算数后算出来的result,这样也能sort, 晕~
希望你明白我问什么
不太明白红色的部分...
Person 这物件已经 implement IComparable, 所以你必须写出 compare 的方法, 你已经写在 CompareTo 里面. Sort List 要接收的是 IComparable 介面的 object, 好让它能运用 CompareTo 来进行它的 sorting, 简单来说就是这样运作... |
|
|
|
|
|
|
|

楼主 |
发表于 5-4-2006 12:18 PM
|
显示全部楼层
谢谢你的回复(我等很久了),
if objOtherPerson.LastName < me.LastName then
return -1
elseif objOtherPerson.LastName > me.lastName then
return 1
else
if objOtherPerson.FirstName < me.FirstName then
return - 1
elseif objotherperson.firstName > me.firstName then
return 1
else
return 0
end if
end if
我很不明白compareTo它的return value是怎么能sort 呢?是根据什么来排续de?
另一个sample如下,他的compareTo return de value 是怎么sort de?
http://www.raritanval.edu/depart ... etfw/Interfaces.htm
如果这个明白了,我就可以去next chapter了  |
|
|
|
|
|
|
|
发表于 5-4-2006 02:34 PM
|
显示全部楼层
CompareTo 只是比较两个物件, 并没有 sort.
真正的 sort 已经在 Sort List 里做好了.
CompareTo 的意义是, 只要物件 1 比物件 2 大, 那么物件 2 就会和物件 1 交换位置, 然后一直和物件 3, 物件 4... 比较下去, 来达到 sort 的目的. |
|
|
|
|
|
|
|

楼主 |
发表于 5-4-2006 04:42 PM
|
显示全部楼层
原帖由 goatstudio 于 5-4-2006 02:34 PM 发表
CompareTo 只是比较两个物件, 并没有 sort.
真正的 sort 已经在 Sort List 里做好了.
CompareTo 的意义是, 只要物件 1 比物件 2 大, 那么物件 2 就会和物件 1 交换位置, 然后一直和物件 3, 物件 4... 比较下 ...
xie xie ni, wo ming bai le  |
|
|
|
|
|
|
| |
本周最热论坛帖子
|