作者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