Имею 2 arraylist
и сопоставляю их друг с другом. Первые несколько минут я получал хорошие результаты, но после этого всегда получал неверные результаты.
Код:
//Prapering lists for compare
ArrayList<String> list_old = new ArrayList<>(tinydb.getListString("list_old"));
for(String i: tinydb.getListString("list_old")) {
for(String j: tinydb.getListString("list_new")) {
if (i.contains(j)) {
list_old.remove(i);
break;
}
}
}
Что не так в этом коде?
Строка списка в TinyDB:
public ArrayList<String> getListString(String key) {
return new ArrayList<String>(Arrays.asList(TextUtils.split(preferences.getString(key, ""), "‚‗‚")));
}
Можете ли вы предоставить код для getListString?
@TungstenX Я редактировал, пожалуйста, посмотрите.
Вы снова загружаете свой список. Вам нужно не загружать его снова, а уже существующий.
for(String i : list_old) {
for (String j: tinydb.getListString("list_new")) {
if (i.contains(j)) {
list_old.remove(i);
break;
}
}
}
Приложение останавливается, когда я делаю это: E / AndroidRuntime: FATAL EXCEPTION: main Process: com.example.project, PID: 5980 java.util.ConcurrentModificationException
Тогда мы на один шаг ближе к решению вашей проблемы :) Вы должны показать нам, что такое tinydb
и какова сигнатура метода getListString()
.
Я редактировал @Danon
Вы запускаете этот код из нескольких потоков? Или с помощью parralelStream()
?
Это помещаемая строка: tinydb.putListString ("list_old", MyArrayList);
не останавливается, когда я делаю вот так: for (String i: new ArrayList <> (list_old)) {
ОНО не останавливается, потому что вы удаляете его из копии списка, а повторяете оригинал. Вы не работаете с одним и тем же экземпляром списка.
Да вы правы, я нахожу это и исправляю. Спасибо :)
Можете ли вы опубликовать, что такое списки? А какой пример плохих данных вы получите?