您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    分享几个任务中适用的代码优化技巧!(2)
    时间:2021-08-08 08:04 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

    当这些对象存入 HashMap 时,功用就会十分低,由于 HashMap 是经过 HashCode 定位到 Hash 槽,有抵触的时分,才会运用链表或许红黑树组织节点,固定地前往 0,相当于把 Hash 寻址功用有效了。

    HashMap等集合初始化的时分,指定初始值大小

    这样的对象有很多,比如 ArrayList,StringBuilder 等,经过指定初始值大小可增加扩容形成的功用损耗。

    初始值大小计算可以参考《阿里巴巴开发手册》:

    分享几个任务中适用的代码优化技巧!

    循环内不要不断创立对象援用

    //反例 

    for (int i = 1; i <= size; i++) { 

        Object obj = new Object();     

     

    //正例 

    Object obj = null

    for (int i = 0; i <= size; i++) { 

        obj = new Object(); 

    第一种会招致内存中有size个Object对象援用存在,size很大的话,就消耗内存了

    遍历Map 的时分,运用 EntrySet 办法

    运用 EntrySet 办法,可以直接前往 set 对象,直接睦龃用即可;而运用 KeySet 办法,取得的是key 的集合,需求再停止一次 get 操作,多了一个操作步骤,所以更引荐运用 EntrySet 方式遍历 Map。

    Set<Map.Entry<String, String>> entryseSet = nmap.entrySet(); 

    for (Map.Entry<String, String> entry : entryseSet) { 

        System.out.println(entry.getKey()+","+entry.getValue()); 

    不要在多线程下运用同一个 Random

    Random 类的 seed 会在并发拜访的状况下发作竞争,形成功用降低,建议在多线程环境下运用 ThreadLocalRandom 类。

    public static void main(String[] args) { 

           ThreadLocalRandom threadLocalRandom = ThreadLocalRandom.current(); 

           Thread thread1 = new Thread(()->{ 

               for (int i=0;i<10;i++){ 

    (责任编辑:admin)