在两个列表中创建匹配元素的映射

Far*_*hti -2 java collections lambda java-8 java-stream

我有两个清单。我想创建一个映射里面会有真正的匹配部件及虚假的唯一一个在Java 8
EG
输入 -

列表1 = [A,B,C,D]
列表2 = [B,C,Y,Z]

输出 -

地图

A,假

B,真

C真

D,假

我的代码:

Map<String,Boolean> map = new HashMap<>();
            for(String var1 : list1) {
                boolean value;
                if (CollectionUtils.isNotEmpty(list2)) {
                    Optional<String> valueOptional = list2.stream()
                            .filter(e1 -> e1.equalsIgnoreCase(var1))
                            .findAny();
                    value = valueOptional.isPresent();
                    map.put(var1, value);
                }
            }
Run Code Online (Sandbox Code Playgroud)

Rav*_*ala 6

首先,Set使用第二个列表创建一个。然后使用toMap收集器创建以字符串为键,并且在setTwo中将其作为值的映射。这是它的外观。

Set<String> setTwo = new HashSet<>(listTwo);
Map<String, Boolean> existenceMap = listOne.stream()
    .collect(Collectors.toMap(s -> s, setTwo::contains, (a, b) -> a));
Run Code Online (Sandbox Code Playgroud)