java集合collection体系思维导图整理

开始时间:2018年8月18日17:00:45

结束时间 :2018年8月18日18:19:32

累计时间 :

知识点补充:

存放数据的容器: 数组: 
  1: 数组的长度固定: 
  
  Student stu[] = new Student[20];
  
  new Student("lisi",21); 
  
  数组扩容: 
   (1)创建一个临时的数组: 
   (2)将数组的内容copy到 临时数组。 
   (3)原来的数组扩容: 
   (4)把临时数组当中的内容copy回来: 
   
   2: 集合: 存放数据。 
      当存放的内容数量不固定,不确定,有限采用集合。 
   
   
   3: 区别: 
   (1)数组的长度是固定。 
            数组存放的数据类型,必须相同或者是相兼容:
   (2)集合自动扩容。 
           集合当中可以存放任意的数据类型: 
           
           
 一: 集合: 
 1: 在JDK1.0 时候,提供了集合:
    
    线性表: 
      Vector 
        |
      stack 
      
   映射结构: 
       Dictionary(目录)
         |
        Hashtable
         |
        Properties
         
         
    在JDK1.2 新添加了集合类:  形成了集合框架: 
    
   线性表结构: 
    Collection(接口)
       |-------List: (接口) 允许重复元素: 
                |------ArrayList: (重要)
                |------Vector: 
                |------Stack: 
                |------LinkedList: 
       |-------Set:  (接口) 元素不能重复: 
                |------HashSet: 
                |------TreeSet: 
                |------LinkedHashSet: 
       |-------Queue: (接口)
                |------LinkedList: 
         
    实现类: 底层根据数据结构不同而区分: 
    
    
    映射结构; 
    Map
    |----HashMap: (重点)
    |----TreeMap: 
    |----Hashtable:
    |----Properties: (重点)
    
 学习: 看顶层,用底层: 
    
 二:  集合: 位于java.util.*; 
 
    Collection :接口: 
    
    add(Object obj);
    addAll(Collection c); 
    
    remove(Object);
    removeAll(Collection c); 
    
    clear(); 
    size(); 
    contains(); 
    containsAll(); 
    isEmpty(); 
    toArray(); 
    retainAll(); 
    
    iterator(); 
    
    
三: 集合的细节: 
 
 * 1: 存放在集合当中,存放对象的引用: 
 * 2: 往集合当中存放内容, 元素失去了原有的类型,自动提升为Object类型: 
 * 3: 集合当中不能存放基本数据类型,但是在JDK1.5后,有自动装箱功能: 
    
 四: List接口: 
    特点: 存放的元素有序,可重复, 支持下标访问。 
    List集合: 围绕索引添加了一系列的方法: 
    
   增加: 
   add(index, obj);
   addAll(int index, Collection<? extends E> c) 
   
  删除: 
  remove(int index) ; 
  
  改: 
  set(int index, E element) 
  
  查: 
 get(int index) 

一:集合:
 Collection集合: 
    |---List: 元素可重复,有序,支持下标访问:   
         |----ArrayList:  底层是数组:  查询块, 增删相比稍慢,可以被接收。
                                                                    该类的所有的方法都是异步:数据不安全, 效率高。 
               |---- new ArrayList(); 初始容量大小为10. 加载因子: 0.5。    50%扩展: 
               |---- new ArrayList(Collection c);将Collection集合 的实现类转换成一个ArrayList集合: 
               |---- new ArrayList(int num); 指定初始容量大小: (不建议使用:)
               
         |----Vector类:     底层数组:  该类已经被ArrayList取代。 
                                                               该类的实现:线程同步, 数据安全, 效率低。
                                                               
               |----  new Vector(); 创建一个空集合:  初始容量大小为10,  两倍扩展: 
               |----- new Vector(Collection<? extends E> c) 将一些其他的集合对象转换成Vector集合: 
                                                               
               |------elements(); 获得一个枚举: 元素的个数可以被列举:  
         
         |-----LinkedList  :类:  底层是链表结构:  主要是针对头元素和尾元素进行操作: 
               
                    
         
                
               
 二     : 面试问题; 
 (1) Vector 和 ArrayList的区别: 
     共同点: 
     不同点: 
      
 (2)  给定一个ArrayList集合, 使用枚举遍历; 
 
 
 (3) String StringBuilder StringBuffer 三者之间的异同点: 
 StringBuilder: 线程异步, 数据不安全, 效率高。
 StringBuffer:  线程同步,数据安全, 效率低:
 
 (4) 面试问题: 模拟队列: LinkedList: 
 
 //  模拟栈结构: 
    
三:   LinkedList: 类: 
  API方法“: 
   
   添加头和尾: 
   addFirst(E e) 
   addLast(E e)
  获得头和尾: 
   getFirst() 
   getLast(); 
   
  移除头和尾部; 
   removeFirst() 
   removeLast() 
   如果集合当中没有操作的该元素,会抛出异常: 
   
   去除List 集合当中的重复元素: 
  
   
   ====================
   以下三组方法; 在JDK1.6时候存在:如果集合当中没有可操作的元素,返回null。 
    添加头和尾
    offerFirst(E e) 
    offerLast(E e) 
     获得头和尾: 
   peekFirst() 
   peekLast() 
    移除头和尾部;
    pollFirst() 
    pollLast() 
    
    push(); 
  
  
  栈: Stack : 特点:  FILO:    先进后出:   
  队列: Queue : 特点: FIFO:先进先出:  

图中没有提到map 作补充  后面再补一张图:

List集合与Map集合的关系

       从底层实现来看,Set集合和Map集合很类似;从用法的角度来看,List集合和Map集合也有很多类似的地方。

  1. Map接口提供了get(K key)方法,允许Map对象根据key来取得对应的value。
  2. List接口提供了get(int index)方法,允许List对象根据元素索引index来取得对应的value。

       即可以说List相当于所有key都是int类型的Map,也可以说Map是相当于索引是任意类型的List。

2018年8月18日17:44:06于易动 

不太完整 待更ing。。


  

猜你喜欢

转载自blog.csdn.net/qq_41517071/article/details/81810619