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

Java使用集合中的键初始化映射,java,Java,在java中,能否基于现有集的值初始化新映射的键集 比如: Set<String> setOfStrings = getSetFromSomeOtherFuntion(); Map<String, Boolean> map = new Hashmap<>(setOfStrings); 如果这是可能的,那么我会假设映射中每个条目的值都为null,这是可以的,但如果可以设置默认值则更好,例如,如果它是布尔值,则为false。您可以将stream与Collect

在java中,能否基于现有集的值初始化新映射的键集

比如:

Set<String> setOfStrings = getSetFromSomeOtherFuntion();

Map<String, Boolean> map = new Hashmap<>(setOfStrings);
如果这是可能的,那么我会假设映射中每个条目的值都为null,这是可以的,但如果可以设置默认值则更好,例如,如果它是布尔值,则为false。

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

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


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

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

然而,这种方法有点脏,实际上是不必要的。您可能希望看到

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

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);
然而,这种方法有点脏,实际上是不必要的。你可能想看看

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}