[問題] 請問Vector contain的功能..

看板Flash作者 (紅虫)時間13年前 (2010/09/06 14:22), 編輯推噓0(004)
留言4則, 1人參與, 最新討論串1/1
小弟我需要一個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

09/11 02:00, , 1F
寫set不要用Array或Vector,用Dictionary
09/11 02:00, 1F

09/11 02:00, , 2F
因為前者是list結構,後者是binary search tree結構
09/11 02:00, 2F

09/11 02:00, , 3F
運算contain()結果的複雜度分別是O(n)和O(log(n))
09/11 02:00, 3F

09/11 02:01, , 4F
不然自己實作BST結構也OK
09/11 02:01, 4F
文章代碼(AID): #1CX8YKfI (Flash)