我有一個GWT列表框,我需要按字母順序對列表框的內容(字符串)進行排序。 什麼是一個體面的方式來解決這個問題?Gwt列表框按字母排序
我正在考慮使用集合並對其進行排序或使用Arrays.sort(),然後用排序後的值填充列表框。這是一種正確的方法嗎?
感謝
我有一個GWT列表框,我需要按字母順序對列表框的內容(字符串)進行排序。 什麼是一個體面的方式來解決這個問題?Gwt列表框按字母排序
我正在考慮使用集合並對其進行排序或使用Arrays.sort(),然後用排序後的值填充列表框。這是一種正確的方法嗎?
感謝
你已經說了答案,我只是代碼它
項目添加到列表
這裏是代碼
String[] strings = new String[] { "ab", "ac", "a", "abc" };
java.util.Arrays.sort(strings);
ListBox l = new ListBox();
for (String s : strings) {
l.addItem(s);
}
當應用程序中有許多點添加到ListBox時,Presorting不起作用。您可以在更新時添加事件處理程序。僞代碼:
import com.google.gwt.event.dom.client.ChangeHandler;
ChangeHandler sortMyList(){
//extract your elements, sort, then reinsert
}
ListBox lb = new ListBox();
lb.addChangeHandler(sortMyList());
另一種方法是,以列表框延伸到被叫SortedListBox類這使分類爲它們插入元件。這將避免O(n^2)攤銷插入成本。
我做了一個輔助類下面的方法:
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);
}
基本上,當你插入項目到它們被插入按字母順序排列的列表。這樣您可以隨意刪除和添加,並且您的列表將始終被排序。
這不適合大型列表中的性能。隨着列表的增長,找到需要插入項目的位置會變得越來越慢。 – 2016-02-18 08:20:33
你從數據庫中獲取值?那麼最好在查詢本身中進行排序。 – Jai 2011-04-18 19:44:41
我想你知道答案。我會這樣做,但從來沒有嘗試過。 – 2011-04-18 19:45:39