java 板


LINE

其實問題有點模糊 不過我想這應該是程式語言跟java的問題 因為c都是陣列拉~指標啦~等等可以讓你碰到底層的演算法 可是java並沒有這樣子 所以如果你一開始就學資料結構 學C 再來用java 會搞的很亂 實際上除非你自己寫套件 不然像我 沒學過演算法 沒學過資料結構 沒學過C 不知道什麼是指標 不知道什麼位移 更別說什麼tree了 對於只會打電動其他什麼都不會的情況下 一開始就碰java 然後我就照著java.util裡面提供的套件去用 老實說,我根本就不知道裡面到底在幹麻!!! 其實我學習的順序剛好跟大家相反 在這個問題 首先要釐清的是 insert get-->這些方法的定義是什麼? 物件的定義是什麼? 那筆資料的index->定義為何? 所以我只好公堂之上大膽假設一下 你的get是 1.XXObject get(); 這樣嗎? FIFO? LIFO? 還是 2.XXObject get(XXType index);這樣嗎 index是??? 先定義好模組的行為 再來討論一下實作的方式跟細節 因為往往問題確定了,其解決的實作竟然是不可思議的簡單!!! 所以你願意分享一下你所規劃的介面嗎 (順便要有註解喔) PS.在這裡我只用我的想法來寫測試案例 (所以想法肯定會跟原PO不同) XXXList xxxlist = instanceofXXXList(); xxxlist.insert(XXXBeanA("id022")); String key = "id01234"; XXXBeanA bean_null=xxxlist.getByKey(key); Asserts.equalsNull(bean_null); xxxlist.insert(XXXBeanA("id6789")); xxxlist.insert(XXXBeanA("id649")); xxxlist.insert(XXXBeanA("id99789")); Asserts.equals("id99789",xxxlist.getLast().getId()); Asserts.equalsNotNull(xxxlist.getByKey("id649")); 在這裡我定義了 void insert(XXXBeanA bean); XXXBeanA getBykey(String key); XXXBeanA getLast(); 三種行為及其相關的IO參數 (以上我都還沒實作,保證編譯全部紅字!!!) 然後我就來找找到底用什麼方法會更有效率呢? 所以這種問題可以用TDD來思考喔!!!!! 然後getLast()真的很簡單!!! 因為 XXXBeanA last_beanA = null; public void insert(XXXBeanA bean){ //放到按照演算法的容器裡面 _handle(bean); //放置最後 last_beanA=bean; } public XXXBeanA getLast(){ return last_beanA; } 得到最後新增的物件用這樣方式就可以達到了 連什麼演算法都不用!!! 以上的操作並沒有考慮thread safe喔 ※ 引述《sudada (嘰咕嘰咕嘰咕)》之銘言: : 各位好 : 最近遇到一個sorting的問題 : 假設我有一個List裡面放我自訂的class : 他必須是個排序好的狀態 : 但是每次有新增或更新資料 我都必須取得那筆資料的index : 而且使用上get的使用機率應該會比insert高一點 : ^^^ : 這邊修正一下... : 目前我有兩種想法 : 第一 : 每次丟資料進去都call一次sort : 不過這樣沒辦法直接知道我剛剛新增的那筆資料 : 到底會被丟到哪裡去 : 所以sort完以後還要再抓一次index? : 這種方法我覺得完全不可行...... : 第二 : 跑迴圈用自己的compare方式找到適當的位置 : 直接call insert : 這樣"感覺上"快很多 : 但是問題出在用List的資料結構的話 : 每次都必須從頭開始 cost應該是O(n)? : 如果要改進這裡勢必要改資料結構 : 用binary tree又怕會影響整體get的效能 : 想請問大家會怎麼取捨 : 謝謝 -- --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.29.29.131 ※ 編輯: swpoker 來自: 163.29.29.131 (06/19 14:50)
1F:→ swpoker:我是不是有改到推文阿~剛剛沒注意到~不好意思阿 06/19 14:51
2F:→ swpoker:getLast()->得到最後新增物件 06/19 15:19
3F:推 KanoLoa:我重看了幾次,還是不懂你這篇再回原PO的那些問題...orz 06/19 20:39
4F:→ swpoker:老實說~我也不太懂原PO的問題在哪? 06/20 09:15







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Boy-Girl站內搜尋

TOP