Привет всем.
Нужна небольшая помощь. Как можно оптимизировать сортировку.
Создает объект этого класса и добавляет в него список вот примерно: "слово число"
При обращении к нему сортирует его. Можно ли как нибудь оптимизировать процесс??
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-метод проверяет, если слово начинается на присылаемое слово, то добавляет в список на отправку. Если сортировки не было, то запускает её