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

时间:2018-02-13 15:31:24

标签: java list contain

我想问一下,如果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包含元素&#34; inst1&#34;存在于list1中。 这比在另一个内部制作一个循环更好吗? 我使用java 1.6

2 个答案:

答案 0 :(得分:2)

如果您将list1表示为HashSet,.contains()操作会比ArrayList.contains() O(n)快得多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; } } LAG("date", 1) FILTER (WHERE type='A') OVER (PARTITION BY id ORDER BY id ASC) AS "A_lag_1"

tab_A

答案 1 :(得分:-2)

尝试这样的事情:

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