黑马程序员技术交流社区

标题: List接口和子类特性 [打印本页]

作者: 宋美涛    时间: 2015-9-25 20:57
标题: List接口和子类特性
集合
List接口特点:
        有序集合 -- 元素存储和取出的顺序 -- 元素怎么存储就怎么取出来
        有索引的集合
        允许重复的集合

ArrayList集合自身特性:
        底层数据结构是数组,可变数组(复制数组实现可变)
        可以存null
        线程不安全集合,不同步,运行速度快
        元素,查询速度快(索引导致),增删慢(复制数组,所以慢)
        默认长度是10,不够增长50%(原来长度的50%)


Vector集合自身特性:
        底层数据结构是数组,可变数组
        线程安全,同步的,运行速度慢
        查询快,增删慢
        默认长度是10个,增长率是100%


LinkedList自身特性:
        底层数据结构,链表结构:集合容器中,对象之间的地址记录方式存储
        查询慢(按照地址一个一个去找),增删快(记录地址即可,记住前一个地址)
        线程不安去集合,运行快

Set接口特点:
        不允许重复值
        没有索引
        无序

HashSet自身特性:
        数据结构是哈希表(数组+链表)
        存取速度快(数组查询快,链表增删快)
        线程不安全集合,运行速度快

LinkedHashSet自身特性:
        存储取出顺序一致的(有序)
        链表保证有序
        哈希表保证唯一
        线程不安全,运行快
       
TreeSet自身特性:
        底层数据结构红黑树(自然平衡算法二叉树)
        对存储对象进行排序
        线程不安全,运行速度快




Comparable 接口:对实现他的所有类的对象,进行强制排序,顺序为对象的自然顺序(compareTo排序)

Comparator 接口:强行对某个对象排序(compare)


哈希值:通过方法hashCode获取,JVM对于任意的一个对象,都赋予一个不同的十进制数,这就是哈希值

如果两个对象哈希值一样,equals一代返回true吗?
        不一定
如果两个对象,equals方法返回true,拥有相同的哈希值吗
        肯定
       

TreeSet存储自定义对象
*   1. TreeSet集合存储对象的时候,不考虑 hashCode equals(HashSet)
*   2. TreeSet集合依据对象的自然顺序进行排序
*     要求存储到TreeSet集合中的对象,具有自然顺序
*     类,实现Comparable接口,重写compareTo
*     
*   3. TreeSet集合自己具备比较性
*     自定义比较器对象,实现 uitl.Comparator,重写compare
*     接口实现类对象,传递给TreeSet集合
*     一旦有了比较器,TreeSet集合不考虑对象自然顺序
*     
*  8种基本数据类型包装类,+ String
*  重写 hashCode equals 存储到哈希表
*  实现了Comparable接口,重写compareTo方法,红黑树




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2