Re: [問題] compile後出現的note
※ 引述《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 》──┘※※ 內容豐富多元的線上音樂台 ※※
--
討論串 (同標題文章)
完整討論串 (本文為第 30 之 30 篇):