我想问一下,如果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
答案 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?
}
}