Java 列表包含另一个不同类型列表的元素

Java List contains element of another list of a different type

我想问一下是否有更好的方法来查找一个 List 是否至少包含另一个不同类型的 List 的一个元素。

例如

public class AnotherType{
  private int x;
  private String label;
  ....
}


List<String> list1 = new ArrayLis<String>();
list1.add("inst1");
list1.add("inst2");
list1.add("inst3");
List<AnotherType> list2 = new ArrayList<AnotherType>();
list2.add(new AnotherType(1,"inst7"));
list2.add(new AnotherType(1,"inst1"));

现在我想找到索引 1(第二个元素)中的 list2 包含存在于 list1 中的元素 "inst1"。 这比在另一个循环中制作一个循环更好吗? 我使用 java 1.6

尝试这样的事情:

for( final AnotherType item : list2 )
{
  if ( list1.contains(item.getLabel() )
  {
    // TODO what do you want to do with the found items?
  }
}

如果将 list1 表示为 HashSet,.contains() 操作会快得多,O(1),与 ArrayList.contains() 相比,[=15] =].

List<String> list1 = new ArrayLis<String>();
list1.add("inst1");
list1.add("inst2");
list1.add("inst3");

List<AnotherType> list2 = new ArrayList<AnotherType>();
list2.add(new AnotherType(1,"inst7"));
list2.add(new AnotherType(1,"inst1"));

Set<String> set1 = new HashSet<>(list1);

for(AnotherType elem : list2) {
     if(set1.contains(elem.getLabel())) {
         //  Do your thing here.
         return true;
     }
}