Java 8 从列表A中删除一个元素,比较列表A和字符串数组B,并从数组B中删除列表A中的元素,

Java 8 从列表A中删除一个元素,比较列表A和字符串数组B,并从数组B中删除列表A中的元素,,java-8,java-stream,Java 8,Java Stream,我有一个列表和一个字符串数组 String[] B List<String> A String[]B 列举 我想检查列表A中是否存在元素,将其删除, 然后删除列表A中的数组B中的元素 如何在Java8中使用streams在一行中完成 这就是从列表中删除元素的方式 A.stream().filter(element->!element.equalsIgnoreCase(tobeIgnored).collect(collector.toList());首先,我要从A创建一个哈希集和一

我有一个列表和一个字符串数组

String[] B
List<String> A
String[]B
列举
我想检查列表A中是否存在元素,将其删除, 然后删除列表A中的数组B中的元素

如何在Java8中使用streams在一行中完成

这就是从列表中删除元素的方式
A.stream().filter(element->!element.equalsIgnoreCase(tobeIgnored).collect(collector.toList());

首先,我要从
A
创建一个
哈希集和一个数组列表:

List<String> list = new ArrayList<>(Arrays.asList(B));
Set<String> set = new HashSet<>(A);

首先,我将从
a
创建一个
HashSet
,并从数组中创建一个列表:

List<String> list = new ArrayList<>(Arrays.asList(B));
Set<String> set = new HashSet<>(A);
看来这是可行的:

List A
Array B

B = Arrays.stream(B).filter(s -> !(A.stream().filter(el ->  
!el.equalsIgnoreCase("ok")).collect(Collectors.toList())). 
contains(s)).toArray(String[]::new);
看来这是可行的:

List A
Array B

B = Arrays.stream(B).filter(s -> !(A.stream().filter(el ->  
!el.equalsIgnoreCase("ok")).collect(Collectors.toList())). 
contains(s)).toArray(String[]::new);

添加了一个示例是否要从数组B中删除列表A的所有元素,或者如果列表A中存在指定的元素,则仅从数组B中删除该元素?#1从列表A中删除元素,如果该元素符合条件,则如果列表A中有数组B的任何元素,则从数组B中删除该元素,这是两个独立的任务。为什么希望同时执行这两个任务这些东西放在一行中?没有特别的原因,我在想我是否可以将这两个代码组合起来…添加了一个示例,你想从数组B中删除列表a的所有元素,还是只从数组B中删除指定的元素(如果它存在于列表a中)?1从列表a中删除元素,如果它符合条件,那么如果数组B的任何元素在列表a中,请重新选择把它从数组B中移开,这是两个独立的任务。为什么你希望在一行中完成这两件事?没有特殊的原因,我在想如果我能把这两个代码结合起来……我希望我在生产中从来没有见过这种代码!但这不是代码的错:它满足奇怪的要求,而且做得很好!我gree,它不可读,我可能也不会这样做!除了几乎不可读之外,它在列表上使用
contains
,即
O(N^2)
。所有这些都是因为希望在一行中编写两个独立的任务……我希望我在生产中从未见过这种代码!但这不是代码的错误:它满足奇怪的要求,而且做得非常好!我同意,它不可读,我可能也不会这样做!除了几乎不可读之外,它使用
包含一个列表,它是
O(N^2)
。。。