類似Google搜尋提示的兩種做法

2021-08-30 10:04:00 字數 1333 閱讀 4454

做了個簡單的搜尋提示程式,類似google之類的搜尋提示,就是輸入乙個內容時,會把開頭對得上的內容顯示出來。下面可以測試看看:

呵呵,這裡沒有顯示有多少條結果,當然也要做到統計也是可以的。這裡只做簡單的顯示。

下面就說說兩種做法。

第一種,是在使用者輸入提示資訊的時候,把使用者輸入的資訊跟應用中存的資料進行比較,找出匹配的資料,然後 在list元件裡顯示出來

//輸入文字內容變化事件

private function inputchangeevent():void}}

//顯示是否有相關的搜尋相關資訊,如果沒有就顯示預設資訊

if(seachdata.length == 0)

//顯示出與搜尋相關的資訊

searchmsglist.visible = true;

searchmsglist.dataprovider = seachdata;}}

恩,該函式是當輸入文字框的內容有變化時觸發的。**的注釋已經相當清晰了

接下來看另外一種處理發方法。其實大體的都差不多,這裡只是對資料來源剛傳進來的時候,就馬上對資料進行分析,歸類,逐個分析,把具有相同內容的資料存放在乙個陣列裡,最後把這些資料都和搜尋內容**,存放到乙個集合裡。所以當使用者錄入資訊時,直接根據輸入內容那分類好的陣列就可以了

下面是傳輸資料源時的**

/*** 設定需要搜尋的內容

* @param:內容陣列

*/ public function setsearchdatas(source:array):void

//存放完整的物件

strary.additem(source[i]);}}

}然後下面是使用者輸入資訊有變化時的相應函式

//輸入文字內容變化事件

private function inputchangeevent():void

//顯示出與搜尋相關的資訊

searchmsglist.visible = true;

searchmsglist.dataprovider = strary;}}

最後總結一下,如果少量資料的話,應該都沒什麼區別。但是,如果有大量資料時,區別就來了。

第一方法比較簡單,消耗的記憶體比較少,但是因為是即時分析資料來源,所以搜尋出來可能會稍微慢點。

第二種的話,因為實現已經分析好了,可以根據使用者輸入的內容馬上從雜湊表裡取出對應資料。所以取資料反應會非常快。但是占用記憶體可能會多點(因為要根據每個字串組合進行存放,不過其實也是增加多一些字串,物件只是引用而已)。

同時還做一些細的優化,例如限制長度等等,至於怎麼用,根據愛好了。如果資料量大的話,個人偏向第二種。這裡的兩種演算法其實跟具體的cs3或者flex元件不相關的,只是用list來顯示而已。

兩種基本的搜尋

搜尋是個 暴力的 好東西,學一學還是很有必要滴 首先就是dfs了,這是個好東西 一般來說,它分為3個階段 遞迴 回溯 dfs dfs的過程就類似於走迷宮時死磕一條路,除非走到死胡同,不然一直走下去,並且它會把所有可走的路都走一遍,因此它的效率不高,所以我們通常會加一些優化。最常用的是剪枝和記憶化 剪...

視窗顯示Tip提示資訊的兩種辦法

視窗顯示提示資訊的兩種辦法 ctooltipctrl控制項 class ceditnumberdlg public cdialog protected virtual void dodataexchange cdataexchange pdx ddx ddv 支援 double m number c...

類似微博的訊息推送的兩種實現方式

我們在微博上訂閱並關注某些人的微博,這些關注的人發布一條微博的時候,我們開啟微博瀏覽會看到一條條訊息按照時間的逆序在我們的首頁展示出來,我們可以不停地往下閱覽這些訊息。那麼從訊息發布到閱覽,這背後的技術是怎麼實現的呢?下面我們來一看究竟。方案一 在訊息發布的時候插入同乙個全域性的訊息主表中。當使用者...