Задать вопрос
@artshelom

Как ускорить обработку??

Привет всем.
Нужна небольшая помощь. Как можно оптимизировать сортировку.
Создает объект этого класса и добавляет в него список вот примерно: "слово число"
При обращении к нему сортирует его. Можно ли как нибудь оптимизировать процесс??
public class Spisoc{
    private List<String> str = new ArrayList<>();
    private List<Integer> number = new ArrayList<>();
    private ArrayList<String> list;
    public synchronized void add(String text){
        str.add(text.split(" ")[0]);
        number.add(Integer.valueOf(text.split(" ")[1]));
    }
    private void lookup(){
        int sdr = 0;
        list = new ArrayList<>();
        ArrayList<Integer> nomStr = new ArrayList<>();
        nomStr.addAll(number);
        TreeSet<String> stroka = new TreeSet<>();
        Collections.sort(nomStr);
        for (int er = 0; er < number.size(); er++){
            stroka.add(str.get(number.indexOf(nomStr.get(er))));
            number.set(number.indexOf(nomStr.get(er)), 0);
            if (er != 0)
                sdr= nomStr.get(er - 1);
            if (nomStr.get(er) != sdr || er==0) {
                for (String gt : stroka)
                    list.add(gt);
                stroka.clear();
            }
        }
    }
    public String retriev(String text) {
        if (str.size() == 0)
            return null;
        if (list==null)
            lookup();
        String rezult = "";
        for (int er = list.size() - 1, sy = 0; er >= 0 && sy <= 9; er--){
            if (list.get(er).startsWith(text)) {
                sy++;
                rezult += list.get(er) + "\n";
            }
        }
        return rezult;
    }
}

lookup-метод сортирует массив по числу, если числа одинаковые, то по алфавиту
retriev-метод проверяет, если слово начинается на присылаемое слово, то добавляет в список на отправку. Если сортировки не было, то запускает её
  • Вопрос задан
  • 292 просмотра
Подписаться 1 Оценить 5 комментариев
Пригласить эксперта
Ответы на вопрос 1
TheKnight
@TheKnight
Программист
TreeSet вместо ArrayList с кастомным компаратором? Но это в случае если нет завязок на порядок вставки. Для многопоточного случая есть аналогичные структуры данных.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы