作者l314 (紅虫)
看板Flash
標題[問題] 請問Vector contain的功能..
時間Mon Sep 6 14:22:09 2010
小弟我需要一個Set, 裡面的元素不能重覆,
AS3 目前內建的Collection, 似乎只有Object, Array, Vector, Dictionary.
小弟決定用Vector來實作這個Set,
所以在Add Entry時, 要檢查Vector中是否已存在相同的Entry.
(假設Entry 是一個 A Class 的instatnce, 只有x,y 值,
並有一個public equal function, 用來比對兩個A Class instance是否相同.)
小弟直覺想找Vector 是否有contain() 這樣找元素的function,
發現最類似的是some() 這個function,
但是some()這個function 需要餵call-back function 給它,
小弟在想那不如自己寫個contain function如下, 或許效能會比較好?
private var table :Vector.<A>;
public function contain(a:A):Boolean
{
for each (var ele:A in table){
if(ele.equal(a)) return true;
}
return false;
}
還是版上大大有什麼正規的寫法可以分享嗎?
謝謝..
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.251.117.162
→ cjcat2266:寫set不要用Array或Vector,用Dictionary 09/11 02:00
→ cjcat2266:因為前者是list結構,後者是binary search tree結構 09/11 02:00
→ cjcat2266:運算contain()結果的複雜度分別是O(n)和O(log(n)) 09/11 02:00
→ cjcat2266:不然自己實作BST結構也OK 09/11 02:01