在java中,能否基于现有的键集的值初始化新Map的键集?比如:
Set<String> setOfStrings = getSetFromSomeOtherFuntion(); Map<String, Boolean> map = new Hashmap<>(setOfStrings);
如果这是可能的,那么我会假设Map中每个条目的值都是null,这是可以的,但是如果可以设置一个默认值(例如,如果它是布尔值,则为false),那就更好了。
mnemlml81#
如果必须在构造函数中执行,可以执行以下操作:
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“双大括号初始化”的效率?
qcbq4gxm2#
Map<K, V> map = new HashMap<>(); setOfStrings.forEach(e -> map.put(e, false));
4sup72z83#
您可以使用流与 Collectors.toMap 像这样:
Collectors.toMap
Map<String, Boolean> map = setOfStrings.stream() .collect(Collectors.toMap(Function.identity(), v -> false));
3条答案
按热度按时间mnemlml81#
如果必须在构造函数中执行,可以执行以下操作:
输出:
然而,这种方法有点脏,而且确实没有必要。您可能想看看java“双大括号初始化”的效率?
qcbq4gxm2#
4sup72z83#
您可以使用流与
Collectors.toMap
像这样: