从列表A中删除元素,比较列表A和字符串数组B,然后从数组B中删除列表A中的元素,

时间:2018-10-09 11:49:37

标签: java-8 java-stream

我有一个列表和一个String数组

String[] B
List<String> A

我要检查列表A中是否存在某个元素,将其删除, 然后删除列表B中数组B中的元素,

如何在Java 8中使用流在一行中完成?

这是如何从列表中删除元素 A.stream()。filter(element->!element.equalsIgnoreCase(tobeIgnored).collect(Collectors.toList());

2 个答案:

答案 0 :(得分:1)

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

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

然后只用所需的元素创建数组:

list.removeIf(set::contains);
list.toArray(new String[0]);

答案 1 :(得分:1)

看来这可行:

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);