集合框架

 List 接口

List 是一个元素有序的、可以重复、可以为 null 的序列。

ArrayList

特点:快速随机访问元素。

pk数组

  • 允许动态扩容 (默认个数:10,超过集合的容量时,扩充为原来的1.5倍,即:10*1.5=15)
  • 允许插入不同类型的数据(ArrayList会把所有插入其中的数据都当作为object类型来处理,存在装箱与拆箱的操作,会带来较大的性能损耗)

pkVector

  • Vector默认个数也为10,但它们之间的扩容方式不同,Vector默认扩容是增长一倍的容量
  • ArrayList属于线程不安全,Vector通过synchronized来保证线程安全。

笔试题

ArrayList list = new ArrayList(20);中的list扩充几次?[解析]  0

LinkedList

特点:快速插入,删除元素


 

Map

HashMap

整体结构

 Entry是HashMap的基本组成单元,每一个Entry包含一个key-value键值。代码如下

    static class Entry<K,V> implements Map.Entry<K,V> {
        final K key;
        V value;
        Entry<K,V> next; //单链表(头插法)
        int hash;
Entry(int h, K k, V v, Entry<K,V> n) { value = v; next = n; key = k; hash = h; } 

思考题

为何HashMap的数组长度一定是2的次幂?

[解析] 从使散列地址分布均匀,扩容后数据位置重新调换的次数来分析。

为什么重写equals方法需同时重写hashCode方法?

 

Set接口

Set内部实现是基于Map的,所以Set取值时不保证数据和存入的时候顺序一致,并且不允许空值,不允许重复值。

 

posted @ 2018-08-05 02:12  cxbit  阅读(157)  评论(0编辑  收藏  举报