Java 为什么我的ArrayList在使用contains时总是给出错误的数据?
我有两个Java 为什么我的ArrayList在使用contains时总是给出错误的数据?,java,android,arraylist,Java,Android,Arraylist,我有两个arraylist,我将它们相互匹配。在最初的几分钟里,我得到了很好的结果,但在那之后,我总是得到错误的结果 代码: //Prapering lists for compare ArrayList<String> list_old = new ArrayList<>(tinydb.getListString("list_old")); for
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;
}
}
}
public ArrayList<String> getListString(String key) {
return new ArrayList<String>(Arrays.asList(TextUtils.split(preferences.getString(key, ""), "‚‗‚")));
}
//Prapering用于比较的列表
ArrayList list_old=新的ArrayList(tinydb.getListString(“list_old”);
对于(字符串i:tinydb.getListString(“列表旧”)){
对于(字符串j:tinydb.getListString(“列表新”)){
如果(i.包含(j)){
列出旧的。删除(i);
打破
}
}
}
这个代码有什么问题
在TinyDB中列出字符串:
//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;
}
}
}
public ArrayList<String> getListString(String key) {
return new ArrayList<String>(Arrays.asList(TextUtils.split(preferences.getString(key, ""), "‚‗‚")));
}
publicArrayList getListString(字符串键){
返回新的ArrayList(Arrays.asList(TextUtils.split(preferences.getString(key,“”,“”,“”,“”?));
}
再次加载列表。您不应该再次加载它,而是加载现有的
for(String i : list_old) {
for (String j: tinydb.getListString("list_new")) {
if (i.contains(j)) {
list_old.remove(i);
break;
}
}
}
你能发布什么是列表吗?你得到的坏数据的例子是什么?你能提供getListString的代码吗?@TungstenX我编辑过请看它。当我这样做时,APP正在停止:E/AndroidRuntime:FATAL EXCEPTION:main Process:com.example.project,PID:5980 java.util.ConcurrentModificationException我们离解决您的问题又近了一步:)您必须告诉我们什么是
tinydb
,以及getListString()
方法的签名是什么。我编辑了@Danon您是否从多个线程运行此代码?或者使用parralelStream()
?这是put字符串:tinydb.putListString(“list_old”,MyArrayList);