2015-04-05 22 views
0

不知道這個問題是否是自我解釋,但我在一次採訪中被問及這個問題。假設我們的UI中有一個輸入框(Say First Name),我們在DB(說用戶)中有一個表格。有人前來並在那裏寫上「S」,並給他一個以「S」開頭的所有人姓名的列表,作爲提示。然後他添加「A」,然後給他一個以「SA」開頭的人名列表等等。爲了實現這一點,我們有我們的JSP-> Controller-> Service-> DAO-> DB。哪個集合<String>用於搜索數據與字符輸入

因此,我們不是一次又一次擊中數據庫,而是將整個數據保存在服務器的緩存中或會話中的一個集合中。

然後我們應該使用哪個集合,在每個輸入框的onChange()之後,我們從Collection中獲取適當的數據並將其顯示給用戶?假設,我們每個角色擁有數百萬的數據。

回答

0

我認爲面試官可能在尋找的答案是ConcurrentSkipListSet。您可以在這裏閱讀javadocs,查看方法,並確定它是否符合要求。

+0

看起來它們在多線程環境中更有用。我們的目標是減少這裏的迭代。我將如何跳轉或到達以「S」開頭,然後是「SA」開頭的名稱,然後獲取它們。 – Jaikrat 2015-04-05 09:36:36

+1

@Jaikrat - 再次提示。提示:tailSet。但如果收集不需要併發的,然後TreeSet可以用同樣的方式 – 2015-04-05 09:54:27

+0

是的,有些是真的,我創建了一個程序並進行了測試,實際上,req是當有人輸入「S」時,集合應該給我們以「S」開頭的名字。 tailSet()給我們所有以「S」,「T」,「U」...「Z」開頭的名字。但是,它確實跳過了以A,B ... R開頭的名字。 。 – Jaikrat 2015-04-05 10:11:13