今天在看代码的时候,发现了一个比较奇怪的写法,总之没见过Maps.newHashMap()
,后面查资料知道这是这是引用了谷歌提供的guava包
<!-- google java lib -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>17.0</version>
</dependency>
按照平常我们的习惯,在创建Map时,一般都会使用new HashMap<K, V>()
,我查看了一下他的源代码
public static <K, V> HashMap<K, V> newHashMap() {
return new HashMap();
}
也就是封装了一个静态方法而已,返回的还是一个new HashMap<k,v>()
还封装了HashMap
的其他方法,有兴趣的可以再去看看源码
public static <K, V> HashMap<K, V> newHashMapWithExpectedSize(int expectedSize) {
return new HashMap(capacity(expectedSize));
}
static int capacity(int expectedSize) {
if (expectedSize < 3) {
CollectPreconditions.checkNonnegative(expectedSize, "expectedSize");
return expectedSize + 1;
} else {
return expectedSize < 1073741824 ? expectedSize + expectedSize / 3 : 2147483647;
}
}