【发布时间】:2018-07-24 00:39:50
【问题描述】:
我想问是否有更好的方法来查找一个 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
【问题讨论】:
-
Streams 很擅长这个。为什么选择 Java 6?它落后了 3 个主要版本。
-
只需遍历列表 1,一旦找到也在列表 2 中的元素,就中断。你试过什么?你如何定义“更好”?
-
如果
inst7等是唯一的,您可以创建一个Map<String, AnotherType>。或者Map<String, List<AnotherType>>. -
如果
insts 是唯一的,并且您不关心list1的顺序,则可以将其建模为HashSet,之后list1.contains()将花费更少的时间.