我欢迎API中的方法轻松创建默认初始化。
标准(Java8)版本:
Map<String,List<Integer>> datas = new HashMap<>();
List<Integer> integersList = datas.getOrDefault( "somekey", new ArrayList<>() );
这将在代码执行时实例化一个新的ArrayList,无论是否需要新列表。
所需的Lambda供应商版本:
Map<String,List<Integer>> datas = new HashMap<>();
List<Integer> integersList = datas.getOrDefault( "somekey", ()->new ArrayList() );
仅当所需密钥不在映射中时才会实例化(或执行某些实例化代码)。
密码
getOrDefault()
public V getOrDefault( K key, Supplier<V> supplier ) {
if ( !super.containsKey( key ) && supplier != null ) {
super.put( key, supplier.get() );
}
return super.get( key );
}
他们为什么(?)最初不是这样构建的,或者后来添加了这样的功能?
我想还有更多的例子说明Lambda可以解决不必要的代码执行,而不仅仅是这个例子中的映射。
顺便说一句:很抱歉再次提出一个问题,但我不知道如何用不同的术语准确地查找我的问题。。。
欢迎发布有用的链接。
感谢您分享的知识:-)