zoukankan      html  css  js  c++  java
  • Java中的集合

    在涉及到线程安全时,推荐使用:因为效率更高

      ArrayList 对应 CopyOnWriteArrayList

      HashSet 对应 CopyOnWriteArraySet

      TreeSet 对应 ConcurrentSkipListSet

      HashMap 对应 ConcurrentHashMap 而不是使用 Hashtable

        ConcurrentHashMap:synchronized锁是局部锁定,只锁定桶。当对当前元素锁定时,其他元素不锁定

        Hashtable:锁定整个哈希表,一个操作正在进行时,其他操作也同时锁定,效率低

      TreeMap 对应 ConcurrentSkipListMap

    for循环和Iterator遍历单列集合的性能问题:

      对于实现了RandomAccess接口的类来说,使用for循环遍历比使用Iterator遍历更加高效快速。

      RandomAccess是一个标记接口,用于标明实现了该接口的List支持快速随机访问。并且指出了该接口的主要用途是当随机或顺序访问一些List时,允许泛型算法改变它们的行为来提升性能。

      例如:ArrayList实现了RandomAccess接口,用for循环遍历比iterator迭代器遍历快,LinkedList用iterator迭代器遍历比for循环遍历快。

     

         不建议使用,keySet获取迭代器一次,通过 get 又迭代一次,性能低。

      3.jdk8以后使用Map接口中的默认方法遍历:

        源码:

    default void forEach(BiConsumer<? super K,? super V> action) 
    BiConsumer接口中的方法:
        void accept​(T t, U u) 对给定的参数执行此操作。  
            参数 
                t - 第一个输入参数 
                u - 第二个输入参数 

        演示:

    public class Demo01 {
        public static void main(String[] args) {
            HashMap<String,String> m1 = new HashMap();
            m1.put("001", "zhangsan");
            m1.put("002", "lisi");
            m1.forEach((key,value)->{
                System.out.println(key+"---"+value);
            });
        }
    }

    使用迭代器遍历Collection集合:

    /**
     * 使用迭代器遍历Collection集合
     */
    public class IteratorTest {
        public static void main(String[] args) {
            Collection<String> coll = new ArrayList<>();
            coll.add("A");
            coll.add("B");
            coll.add("C");
            coll.add("D");
            coll.add("E");
            Iterator<String> iterator = coll.iterator();
            while (iterator.hasNext()) {
                System.out.println(iterator.next());
            }
        }
    }
  • 相关阅读:
    vue中使用axios
    vue中报错Do not use built-in or reserved HTML elements as component id details
    人月神话阅读笔记01
    学习进度周总结(第五周)
    石家庄地铁系统开发(java web版)(一)
    梦断代码阅读笔记03
    二维数组求最大子数组
    学习进度周总结
    梦断代码阅读笔记02
    二维数组
  • 原文地址:https://www.cnblogs.com/roadlandscape/p/12083186.html
Copyright © 2011-2022 走看看