【发布时间】:2015-01-15 01:57:50
【问题描述】:
我正在寻找一些优化的解决方案,因为我找不到,我有两个自定义对象的 ArrayList。我想检查一个 arrayList 的特定值是否存在于另一个中。
这是我的代码
protected void updateDb(HashSet<allDataProperty> set){
if(set != null)
list = new ArrayList<allDataProperty>(set);
nt = ny.getAllData();
if(nt.size() > 0) {
for (allData e1 : nt) {
for (allData e2 : list) {
if (e1.type.equals("Student") && e2.type.equals("Student")) {
if (!(e1.section.equals(e2.section))) {
Log.d(TAG, "Not FOUND" + e1.section + "dddd" + e2.section);
}
} else if (e1.type.equals("Emp") && e2.type.equals("Emp")) {
if (!(e1.cat == (e2.cat))) {
Log.d(TAG, "FOUND Not" + e1.cat + "Category" + e2.cat);
}
} else if (e1.type.equals("Other") && e2.type.equals("Other")) {
if (!(e1.cls.equals(e2.cls))) {
Log.d(TAG, "FOUND Not");
}
} else if (e1.type.equals("OutSider") && e2.type.equals("OutSider")) {
if (!(e1.ran_code == (e2.ran_code))) {
Log.d(TAG, "FOUND Not " + e1.ran_code + "Generated" + e2.ran_code);
}
}
}
}
}
}
因此,我们的想法是根据我在上面的代码中所做的某些特定条件,查找从数据库返回的列表中是否存在 ArrayList 列表中的任何值。
有没有更简单或干净的方法来做到这一点。感谢您的帮助
【问题讨论】:
-
你不能在这里使用 ArrayList.contains(Object) 吗?见:docs.oracle.com/javase/7/docs/api/java/util/…
-
你的意思是不遍历ArrayList,比如nt.contains(list.get(i).section ?
-
allDataProperty是否覆盖equals和hashCode? -
您可以使用
<String, allDataProperty>的映射(字符串为e1.type) -
你能在
allDataProperty课堂上发布你有什么吗