Gwt ListBox按字母顺序排列

时间:2011-04-18 16:55:57

标签: java gwt listbox

我有一个GWT列表框,我需要按字母顺序对列表框的内容(字符串)进行排序。 什么是解决这个问题的好方法?

我正在考虑使用Collection and Sort或使用Arrays.sort(),然后使用排序值填充列表框。这是一种正确的方法吗?

由于

3 个答案:

答案 0 :(得分:5)

你已经说过答案,我只是编码

  1. Arrays.sort列表

  2. 将项目添加到列表

  3. 这是代码

    String[] strings = new String[] { "ab", "ac", "a", "abc" };
    java.util.Arrays.sort(strings);
    
    ListBox l = new ListBox();
    
    for (String s : strings) {
        l.addItem(s);
    }
    

答案 1 :(得分:1)

我在帮助程序类中创建了以下方法:

public static void ListBoxAddSorted(ListBox lb, String text, String value)
    {
        int count = lb.getItemCount();
        int j;
        for ( j = 0; j < count; j++  )
        {
            String item = lb.getItemText( j );
            if ( item.compareTo( text ) >= 0 )
            {
                break;
            }
        }

        lb.insertItem( text, value, j );
    }

基本上,当您将项目插入列表时,它们将按字母顺序插入。这样您就可以随意删除和添加,并且您的列表将始终排序。

答案 2 :(得分:0)

当应用程序中有许多点添加到ListBox时,预处理不起作用。您可以在更新时添加事件处理程序。伪代码:

import com.google.gwt.event.dom.client.ChangeHandler;

ChangeHandler sortMyList(){

    //extract your elements, sort, then reinsert
}

ListBox lb = new ListBox();
lb.addChangeHandler( sortMyList());

另一种方法是将ListBox扩展为名为SortedListBox的类,该类在插入元素时对元素进行排序。这将避免O(n ^ 2)摊销的插入成本。