作者PsMonkey (痞子军团团长)
站内java
标题Re: [问题] class变数存取问题
时间Wed Mar 15 17:11:45 2006
※ 引述《TonyQ (骨头)》之铭言:
: ※ 引述《PsMonkey (痞子军团团长)》之铭言:
: : 我觉得 Comparator 是给 "有很多种比法" 的 Class 用
: : 如果 Class 比法很单纯,我觉得直接 implement Comparable 就好了
: : 反而还比较直觉... [茶]
: 我想跟你确认一下 发现我们的讨论方向好像不太有交集XD
: Comparator主要是给容器用的吧 (也就是List)
: 而Comparable应该是给被容纳的东西去implement的吧 (也就是object)
: 我们针对的点刚好相反
: 我的视野是放在List上,
: 用Comparator去比较它所存放的东西,
: 而你的视野是放在存放的东西上。
: 还是我看到的东西太过狭隘?
: 请原谅我是个只会用过往写程式的经验来思考的人XD
我想问几件事情
你的 "容器" 指的是? Java Collections Framework 里的东西? 还是?
(毕竟一开始原 po 没有说清楚,我也搞不清楚)
撇开 "容器" 是啥不谈
(java.util.List 也没有看到跟 Comparator 有关的东西)
Comparator 也可以用在 Arrays.sort() 当中阿
我到是觉得那边用起来比较实在...
(不知道哪里还能用 Comparator 的... [远目])
TreeMap 为什麽要那样子设计,我还有待研究
(我就是没用过啦,你是要怎样... [翻桌])
但是,我觉得 Comparator 这种设计方法
是当有需要的时候,可以快速切换比较的方法
而不用去改程式码
当你 class 当中 field 很多,又要分别拿来比的时候
就十分好用
举个例子:
模拟 Scheduler 的运作
我把 PCB 包成一个 class
今天要挑一个 process 给 CPU 临幸 XD
如果要 FIFO,那就把 Ready State 的 PCB 们变成一个 Array
然後 Arrays.sort(pcb, new InTimeComparator())
如果要 SJF,那只要改成
Arrays.sort(pcb, new JobLengthComparator()) 就掰掰再见
而我在 PCB 这个 class 还是 implement Comparable
但是比较的是 Process ID
--
侃侃长论鲜窒碍 网站:
http://www.psmonkey.idv.tw
众目睽睽无心颤 个人版:telnet://legend.twbbs.org
茕居少聊常人事
杀头容易告白难 欢迎参观 Java 版(@ptt.cc) \囧/
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 203.204.16.17