如何根据另一个不同类型列表的内容过滤列表?
我有两个清单:
List objectList;
-
List stringList;
SomeObject
的成员name
为String
类型。 检查stringList
包含不是 objectList
中任何someObject
名称的字符串的最佳方法是什么?
遍历objectList中的对象,并将每个名称添加到Set
(让我们称之为nameSet
)。 然后调用nameSet.containsAll(stringList)
。
我建议使用第一个列表中的所有对象的名称构建一个Set
,然后针对该集检查第二个列表。
Set set = new HashSet (); for (SomeObject o : objectList) { set.add(o.getName()); } for (String s : stringList) { if (!set.contains(s)) { ... // do whatever break; } }
使用集:
HashSet set = new HashSet (); for(SomeObject ob : objectList) set.add(ob.name); boolean ok = false; for(String name : stringList) if(!set.contains(name)){ ok = true; break }
//如果您的病情满意,那就确实如此
尝试这个:
public static boolean containsSameName() { for(String s : stringList) { for(SomeObject obj : objectList) { if(obj.getName().equals(s)) return true; } } return false; }