Gwt ListBox Алфавитный порядок - PullRequest
1 голос
/ 18 апреля 2011

У меня есть список GWT, и мне нужно отсортировать содержимое (строки) списка в алфавитном порядке. Какой достойный способ решить эту проблему?

Я думал о том, чтобы использовать коллекцию и сортировку или использовать Arrays.sort (), а затем заполнить список отсортированными значениями. Это правильный подход?

Спасибо

Ответы [ 3 ]

5 голосов
/ 19 апреля 2011

Вы уже сказали ответ, а я просто набрал его

  1. Arrays.sort список

  2. Добавитьэлементы к списку

Вот код

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 голос
/ 18 января 2013

Я сделал следующий метод в классе помощника:

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 );
    }

В основном, когда вы вставляете элементы в список, они вставляются в алфавитном порядке.Таким образом, вы можете удалять и добавлять по своему желанию, и ваш список всегда будет отсортирован.

0 голосов
/ 16 июня 2011

Предварительная сортировка не работает, когда у вас есть много точек в приложении, где что-то добавляется в 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) амортизированной стоимости вставки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...