我有GWT ComboBox小部件(ListBox + TextBox)。用户可以在此小部件中输入一些文本,或者通过单击下拉箭头从以前存在的文本列表中进行选择。
所以,我有一个ArrayList,当用户输入文本并单击“搜索按钮”时,如果输入的文本存在于ArrayList中,我执行搜索,如果它不存在,我将文本添加到ArrayList。
然后当我需要在View中显示ComboBox时,我正在迭代我的ArrayList并将Arraylist中的每个String添加到ComboBox。
组合框中显示值的方式不是按时间顺序排列的。最新输入的文本位于ComboBox的底部。如何按时间顺序制作?
我可以反转列表并将其添加到我的ComboBox.But当用户选择已存在的文本时,问题是。(我可以将ArrayList子列表,将所选项目推到顶部并进行调整子列表并将其添加回主ArrayList,但我觉得它太长而且无效)
那么对于我正在使用的数据结构(ArrayList)有什么建议吗?哪个可以让我的工作更容易?
很抱歉过于精心制作,但我总觉得最好不要这样做。
答案 0 :(得分: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();
}
}
}
输出结果为:
列表是:雪
列表是:雨雪
列表是:冰雨雪
列表是:雨夹雪冰雨
冰已经在列表中
列表是:冰雨雪雨 列表是:晴天冰雨夹雪雨