2010-09-24 89 views
1

我正在用java編寫一些東西,它會嘗試「自動完成」用戶輸入的內容。我已經在iPhone應用上使用NSPredicate來執行此操作。這非常簡單,並且運作良好。我希望在java中有類似的東西,但沒有太多的運氣發現它。是否有與NSPredicate相當的Java?

如果在java中不存在這樣的事情,有沒有人對最佳方法有任何建議?我正在考慮做一些事情,比如讓一個Map的關鍵字是「A」,「B」,「C」......並且該值是一個以相應字母開頭的排序數據列表,以便獲得更容易管理的大小列表,然後迭代該列表以查找匹配,因爲每個字母都是鍵入的。

任何其他建議,將不勝感激。

感謝

+0

您是否在NSPredicate for JAVA上找到任何等效庫?我現在碰到同一個問題了! – Strider007 2013-04-24 15:03:16

回答

1

您沒有提供足夠的信息。是你自動完成的列表(henseforth稱爲「目標列表」,一個靜態值列表?如果是,請查看String.startsWith(),也可以使用比較器界面來搜索列表。)

如果目標列表是查詢的結果,那麼將查詢結構化爲使用部分匹配(在oracle中,您將有一個where子句「like」xxx%'「xxx是部分值,%是oracle的標記,用於」匹配任何東西「)。

+0

它是從數據庫表中檢索的列表,但我希望這樣做速度很快,所以我想要以避免訪問數據庫並將所有內容保存在內存中,表格相當靜態,每天只更新一次,所以我會在某個計劃時間每天重新加載一次目標列表。有沒有辦法使用String.startsWith或比較器接口,而不必遍歷整個列表? – ViniVidiVici 2010-09-25 00:53:17