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;
}
}
我想问一下是否有更好的方法来查找一个 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;
}
}