Re: [問題] compile後出現的note

看板java作者時間19年前 (2006/07/19 11:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串30/30 (看更多)
※ 引述《inn.bbs@bbs.ntu.edu.tw (幾百年沒換暱稱)》之銘言: > ==> adrianshum@kkcity.com.tw ( ) 提到: > 別這麼說 > 我不會想隨便戰人 > 我提到vector arraylist可以互換 > 是想要解釋為啥我覺得Date有需要 > 就我個人經驗而言 > date timestamp都有需要 > 就像我認為 > vector arraylist都有需要一樣 > 我個人以為 可不可以被取代跟該不該消失是兩回事 > 最後,當然可以互換 > 把arraylist synchronize起來就可以了(如下面的例子) 建議你找找網上的資料. 其實自 Collection 出現後, synchronized list 早該轉 用 synchronized wrapper 來 wrap 著 List implementations. Vector 和 Hashtable 還留著主要是為了 backward compatibility > > 其實 Vector 是該被拔掉的... > > 因為 Sun 現在建議是用 Collections.synchronizedList(new ArrayList()) > > 來達成 synchronized list > 我只有在arraylist那邊看到SUN建議當使用arraylist而且需要注意synchronization > 時候這樣用, > 並沒有看到SUN建議不要用vector > http://www.javaworld.com/javaworld/javaqa/2001-06/03-qa-0622-vector.html > 這篇文章是我看到的對兩者的一些說明 > > Alien > 其實我都是看需求 > 有些時候用arraylist因為只會讀,不會寫 > 有synchronization考量的時候,再用vector > 會這樣是因為arraylist沒有synchrinization機制,速度比較快 > 此外,在現在許多n-tier應用上,用interface來傳遞物件會比較自由 > 從callee回傳到caller傳的是interface 面對 interface 來工作是一回事. Vector 有沒有用又是另一回事了. 要 synchronized ArrayList, 我上面就給了 方法. Vector 倒是除了 for backward compatibility 沒 有什麼價值了. 用 Vector 反而會令修改變得麻煩: 1) 不慎用了 legacy 的 Vector methods, 到時轉用別的 List implementation 就不行 2) 就算是為了 synchronization, 用 syncrhonized List wrapper 也能讓你更簡單轉用別的 List implementation. 或者唯一的好處是 Vector 比 用wrapper 少了一層 method invocation. 但這種好處有多大呢? > callee > public Collection funcA() > { > Vector v.... > ... > return v; > } > 而caller得到回傳物件後,自己再決定如何使用 > public void funcB() > { > Collection c = funcA(); > 這裡就隨便你怎麼使用這個c > 你可以轉成Vector,也可以變成ArrayList 要轉成 Vector 或 ArrayList 就代表你用錯了 > } > 這樣兩邊的programmer都有比較多的彈性 明顯你的例子是 error-prone 而不是 flexible :P alien -- ┌─────KKCITY─────┐KKMAN團隊 全新力作 ◎◎KKBOX◎◎ bbs.kkcity.com.tw 知名歌手通通都有 所有新歌想聽就聽 └──From:202.72.0.45 ──┘※※ 內容豐富多元的線上音樂台 ※※ --
文章代碼(AID): #14lQUq00 (java)
討論串 (同標題文章)
文章代碼(AID): #14lQUq00 (java)