2011-01-14 88 views
0

我有GWT ComboBox小部件(ListBox + TextBox)。用戶可以在此小部件中輸入一些文本,或者通過單擊下拉箭頭從先前存在的文本列表中進行選擇。GWT ComboBox按時間順序

因此,我有一個ArrayList,並且當用戶輸入文本並單擊「搜索按鈕」時,如果輸入的文本存在於ArrayList中,並且如果它不存在,我將文本添加到ArrayList中執行搜索。

然後,當我需要在視圖中顯示組合框時,我通過我的ArrayList迭代並將Arraylist中的每個字符串添加到組合框。

組合框中顯示值的方式不按時間順序排列。最新輸入的文本位於ComboBox的底部。如何使這種按時間順序排列?

我可以反轉列表並將其添加到我的ComboBox.But當用戶選擇一個文本已經存在多數民衆贊成在問題時(我可以子列表ArrayList,推動選定的項目頂部,並進行調整到子列表並將其添加回主ArrayList,但我覺得它太長,而且效果不佳)

所以有沒有關於我正在使用的數據結構(ArrayList)的建議?這可能會讓我的任務更輕鬆?

對不起,因爲過分精心製作,但我總是覺得比不要更好。

+0

使用LinkedList的? – Barry 2011-01-14 17:39:32

回答

1

請問此示例代碼管理你想要的方式的標準列表:

import java.util.*; 
public class ListManager { 

public static void main(String[] args) { 
    String[] items = {"snow", "rain", "ice", "sleet", "ice", "sunny"}; 
    List<String> criteriaList = new ArrayList<String>(); 
    String criteria; 
    for (String newCriteria : items) { 
     if (criteriaList.remove(newCriteria)) { 
      System.out.println(newCriteria + " was in the list already"); 
     } 
     criteriaList.add(0, newCriteria); 
     System.out.println(); 
     System.out.print("List is: "); 
     for (String x : criteriaList) { 
      System.out.print(x +" "); 
     } 
     System.out.println(); 
    } 
} 

}

輸出是:

名單是:雪

名單是:雨雪

列表有:冰雨雪

名單是:雨夾雪冰雨雪

冰是在列表中已經

名單是:冰雨夾雪雨雪

名單是:晴天冰霰雨雪