Skip to content

Commit

Permalink
Merge pull request alibaba#452 from sooxin/master
Browse files Browse the repository at this point in the history
correct method name
  • Loading branch information
xuantan authored Feb 19, 2019
2 parents e956b12 + dcb54fd commit b5623e6
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions p3c-gitbook/编程规约/集合处理.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ List list = Arrays.asList(str);
<br><span style="color:orange">说明</span>:HashMap使用HashMap(int initialCapacity) 初始化,
<br><span style="color:green">正例</span>:initialCapacity = (需要存储的元素个数 / 负载因子) + 1。注意负载因子(即loader factor)默认为0.75,如果暂时无法确定初始值大小,请设置为16(即默认值)。 <br><span style="color:red">反例</span>:HashMap需要放置1024个元素,由于没有设置容量初始大小,随着元素不断增加,容量7次被迫扩大,resize需要重建hash表,严重影响性能。
10. 【推荐】使用entrySet遍历Map类集合KV,而不是keySet方式进行遍历。
<br><span style="color:orange">说明</span>:keySet其实是遍历了2次,一次是转为Iterator对象,另一次是从hashMap中取出key所对应的value。而entrySet只是遍历了一次就把key和value都放到了entry中,效率更高。如果是JDK8,使用Map.foreach方法
<br><span style="color:orange">说明</span>:keySet其实是遍历了2次,一次是转为Iterator对象,另一次是从hashMap中取出key所对应的value。而entrySet只是遍历了一次就把key和value都放到了entry中,效率更高。如果是JDK8,使用Map.forEach方法
<br><span style="color:green">正例</span>:values()返回的是V值集合,是一个list集合对象;keySet()返回的是K值集合,是一个Set集合对象;entrySet()返回的是K-V值组合集合。
11. 【推荐】高度注意Map类集合K/V能不能存储null值的情况,如下表格:

Expand All @@ -82,4 +82,4 @@ List list = Arrays.asList(str);
<span style="color:red">反例</span>: 由于HashMap的干扰,很多人认为ConcurrentHashMap是可以置入null值,而事实上,存储null值时会抛出NPE异常。
12. 【参考】合理利用好集合的有序性(sort)和稳定性(order),避免集合的无序性(unsort)和不稳定性(unorder)带来的负面影响。
<br><span style="color:orange">说明</span>:有序性是指遍历的结果是按某种比较规则依次排列的。稳定性指集合每次遍历的元素次序是一定的。如:ArrayList是order/unsort;HashMap是unorder/unsort;TreeSet是order/sort。
13. 【参考】利用Set元素唯一的特性,可以快速对一个集合进行去重操作,避免使用List的contains方法进行遍历、对比、去重操作。
13. 【参考】利用Set元素唯一的特性,可以快速对一个集合进行去重操作,避免使用List的contains方法进行遍历、对比、去重操作。

0 comments on commit b5623e6

Please sign in to comment.