我有两个列表。我想创建一个地图,该地图的匹配元素为 true ,而Java 8中的唯一元素为 false 。
例如。
输入-
列表1 = [A,B,C,D]
清单2 = [B,C,Y,Z]
输出-
地图 :
A,错误
B,是
C,是
D,false
我的代码:
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);
}
}
答案 0 :(得分: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));
答案 1 :(得分:2)
我建议使用布尔键和值作为列表的映射
class MyBottomSheet : BottomSheetDialogFragment() {
companion object {
fun newInstance() = MyBottomSheet().apply {
isCancelable = false
}
}
}