我有一个GWT列表框,我需要按字母顺序对列表框的内容(字符串)进行排序。 什么是解决这个问题的好方法?
我正在考虑使用Collection and Sort或使用Arrays.sort(),然后使用排序值填充列表框。这是一种正确的方法吗?
由于
答案 0 :(得分:5)
你已经说过答案,我只是编码
将项目添加到列表
这是代码
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)摊销的插入成本。