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)
首先,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)