我有两个清单:
List<SomeObject> objectList;
List<String> stringList;
虽然SomeObject
的成员name
的类型为String
。
检查stringList
是否包含不 someObject
中任何objectList
的名称的字符串的最佳方法是什么?
答案 0 :(得分:4)
遍历objectList中的对象,并将每个名称添加到Set<String>
(让我们称之为nameSet
)。然后拨打nameSet.containsAll(stringList)
。
答案 1 :(得分:3)
我建议使用第一个列表中所有对象的名称构建一个Set<String>
,然后根据该集检查第二个列表。
Set<String> set = new HashSet<String>();
for (SomeObject o : objectList) {
set.add(o.getName());
}
for (String s : stringList) {
if (!set.contains(s)) {
... // do whatever
break;
}
}
答案 2 :(得分:0)
使用套装:
HashSet<String> set = new HashSet<String>();
for(SomeObject ob : objectList)
set.add(ob.name);
boolean ok = false;
for(String name : stringList)
if(!set.contains(name)){
ok = true;
break
}
//如果满足您的条件,则确定为真
答案 3 :(得分:0)
试试这个:
public static boolean containsSameName()
{
for(String s : stringList)
{
for(SomeObject obj : objectList)
{
if(obj.getName().equals(s)) return true;
}
}
return false;
}