• JAVA朝花夕拾-集合框架


     Collections框架:
      Collections :
       List:(当存储相同的元素时不会覆盖,先进先出,可以使用sort排序)
        ArrayList:  可以使用null,采用数组实现,若不指定大小则初始化大小10,如果使用size()直接输出为0,每次扩容大小为原来的1.5倍,线程不安全,查找时间复杂度为:O(n);
           get O(1),add() O(1),remove O(n); 
        LinkedList: 不能使用Null,采用链表实现,线程不安全。
           add(),get(),remove();
        Vector:  采用数组实现,线程安全,方法使用Synchronized
       Set:(当存储重复的元素时会覆盖,会自动排序)
        HashSet: 底层采用HashMap实现
        TreeSet: 底层采用TreeMap实现
       遍历: 
        1, 采用Iterator<E>接口
         Iterator<e> iterator=Collection.iterator();
         while(iterator.hasNext())
          print(iterator.next());
        2,ForEach
         for(E e:Collection c)
      Map:(hash冲突是指 hash值一样,导致冲突)
       HashMap:
         非线程安全
         允许null做键值
         底层采用数组加链表的方式实现,一个Node数组,每个Node数组都是链表的头。
         数组默认初始化大小的长度是16
         put(key,value):
          1,hash(key.hashCode);   //根据key重新计算hash值
          2,indexFor(hash,length);  //找到数组对应的索引 length为数组的长度
          3,如果数组对应的Node不为Null,就循环遍历链表,找到key相同的Node,将value替换将oldvalue返回。
          4,如果没找到,就将key,value添加到索引处
         为了尽量不去遍历链表,我们就需要尽可能使数均匀的分布在数组上,因此需要一个好的计算hash值的方法
         当数的数量足够多时,Hash冲突的几率也越来越高,在设计的时候,为了不影响性能,会自动进行数组扩容,
         当元素个数超过数组长度的0.75,会进行自动扩容,数组长度*2
        性能参数:
         数组初始容量,负载因子(到数组长度多少进行扩容)

       TreeMap:
         非线程安全
         不允许null
         底层采用红黑树实现,有序,想要自定义排序如下:
         TreeMap<Object,Object> tm=new TreeMap(new Comparator(){
          public int compare(obj1,obj2);
         } );
       HashTable: 
         线程安全
         不允许null
         底层采用数组加链表(Hash表)实现

       Map遍历:
         1.通过Map.keySet()方法返回一个Set,然后通过set的遍历遍历。
         2,通过forEach:
          for(Map.Entry<Obj,Obj> entry:Map<Obj,Obj>map){
            entry.getKey();
            entry.getValue();
          }

  • 相关阅读:
    python返回函数与匿名函数
    Session&Cookie
    write RE validation
    hello2 source anaylis
    Filter
    Development descriptor
    web.xml配置详解
    Annotation
    injector
    container
  • 原文地址:https://www.cnblogs.com/dengyuanqi/p/6378296.html
Copyright © 2020-2023  润新知