@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-метод проверяет, если слово начинается на присылаемое слово, то добавляет в список на отправку. Если сортировки не было, то запускает её
  • Вопрос задан
  • 288 просмотров
Пригласить эксперта
Ответы на вопрос 1
TheKnight
@TheKnight
Программист
TreeSet вместо ArrayList с кастомным компаратором? Но это в случае если нет завязок на порядок вставки. Для многопоточного случая есть аналогичные структуры данных.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽
Bell Integrator Ульяновск
До 400 000 ₽
07 мая 2024, в 18:23
20000 руб./за проект
07 мая 2024, в 18:09
2000 руб./за проект
07 мая 2024, в 17:40
300 руб./за проект