Java开发注意事项

时间:2022-02-27 13:12:16

1、Java容器的一个特点就是可以动态扩展,如果容量不够会自动扩容。一些基于数组的数据结构,例如StringBuilderStringBufferArrayListHashMap等等,在扩容的时候都需要做ArrayCopy,对于不断增长的结构来说,经过自动扩容,会存在大量无用的老数组,而回收这些数组的压力,全都会加在GC身上。

这些容器的构造函数中通常都有一个可以指定大小的参数,如果对于某些大小可以预估的容器,建议加上这个参数。

可是因为容器的扩容并不是等到容器满了才扩容,而是有一定的比例,例如HashMap的扩容阈值和负载因子(loadFactor)相关。

Google Guava框架对于容器的初始容量提供了非常便捷的工具方法,可以参考其源代码,例如:

Lists.newArrayListWithCapacity(initialArraySize);
Lists.newArrayListWithExpectedSize(estimatedSize);
Sets.newHashSetWithExpectedSize(expectedSize);
Maps.newHashMapWithExpectedSize(expectedSize);

2、String类的trim();方法默认去除首尾的半角空格。

3、未完待续。