Java使用集合中的键初始化映射



在java中,您可以根据现有映射集的值初始化新映射的键集吗?

类似于:

Set<String> setOfStrings = getSetFromSomeOtherFuntion();
Map<String, Boolean> map = new Hashmap<>(setOfStrings);

如果可能的话,那么我会假设映射中每个条目的值都是null,这是可以的,但如果可以设置默认值(例如,如果它是布尔值,则为false(,那就更好了。

Map<K, V> map = new HashMap<>();
setOfStrings.forEach(e -> map.put(e, false));

您可以将流与Collectors.toMap一起使用,如下所示:

Map<String, Boolean> map = setOfStrings.stream()
.collect(Collectors.toMap(Function.identity(), v -> false));

如果必须在构造函数中执行,可以执行以下操作:

Set<String> set = new HashSet<String>();
set.add("Key1");
set.add("Key2");
set.add("Key3");
Map<String, Boolean> map = new HashMap<String, Boolean>() {
{
set.forEach(str -> put(str, false));
}
};
System.out.println(map);

输出:

{Key2=false, Key1=false, Key3=false}

然而,这种方法有点肮脏,老实说没有必要。您可能希望看到"Java的效率";双支架初始化";?

最新更新