【发布时间】:2011-09-27 13:21:55
【问题描述】:
我有两个列表:
List<SomeObject> objectList;List<String> stringList;
而SomeObject 有一个成员name,其类型为String。
检查stringList 是否包含不是objectList 中任何someObject 的名称的字符串的最佳方法是什么?
【问题讨论】:
标签: java
我有两个列表:
List<SomeObject> objectList;List<String> stringList;而SomeObject 有一个成员name,其类型为String。
检查stringList 是否包含不是objectList 中任何someObject 的名称的字符串的最佳方法是什么?
【问题讨论】:
标签: java
试试这个:
public static boolean containsSameName()
{
for(String s : stringList)
{
for(SomeObject obj : objectList)
{
if(obj.getName().equals(s)) return true;
}
}
return false;
}
【讨论】:
遍历objectList 中的对象并将每个名称添加到Set<String>(我们称之为nameSet)。然后拨打nameSet.containsAll(stringList)。
【讨论】:
使用集:
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
}
//如果你的条件满足就ok了
【讨论】:
我建议用第一个列表中所有对象的名称构建一个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;
}
}
【讨论】: