如何根据另一个不同类型列表的内容过滤列表?

我有两个清单:

  1. List objectList;
  2. List stringList;

SomeObject的成员nameString类型。 检查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; }