将arrayList与java中的Set进行比较

时间:2017-01-25 16:26:03

标签: java arraylist set iteration

我的设置看起来像这样,

final public static Set<String> env = new HashSet<String>(
           Arrays.asList("DEV", "QA", "PREPROD", "PROD"));

我的arrayList将从DB中动态填充,其中包含4个或更少的数据(例如:DEV,QA)

如何找到arraylist中缺少的元素并打印出来?

4 个答案:

答案 0 :(得分:3)

鉴于两个集合ab,这里列出了a中不属于b的{​​{1}}内容。

a.stream()
   .filter(x -> !b.contains(x))
   .forEach(System.out::println);

没有溪流,你可以这样做:

for (String x : a) {
   if (!b.contains(x)) {
       System.out.println(x);
   }
}

答案 1 :(得分:3)

使用removeAll method复制Set并删除List中的所有元素。你将留下一个包含缺失的Set:

List<String> list = ...;
Set<String> set = ...;

Set<String> copy = new HashSet<>(set);
copy.removeAll(list);
System.out.println(copy);

答案 2 :(得分:-1)

您应该使用包含代码中所有可能值的枚举。

然后你可以这样做:

Arrays.asList(YourEnum.values()).removeAll(<elements_got_from_database>));

答案 3 :(得分:-2)

for (String element : array)
    if (!otherarray.contains(element))
        print(element);