A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 空白心 中级黑马   /  2015-6-9 01:01  /  371 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

collection
        ||---List 列表
               特点:
              1,有序(存储元素的顺序和取出元素的顺序一致)
              2,该集合中的元素都有索引,所以可以通过索引(角标) 来访问元素
              3,它可以存储重复元素
常见子类对象:记住:具体的子类对象,我们要学习应该是该对象的特有的数据结                    构,以及相关的特点
               ||-----Vector:jdk1.0 就存在了 底层是数组结构. 可变长度数组
                            原理:一旦元数组长度不够,会创建新数组,将原数组的元素                          复制到新数组中,并将新元素添加到新数组中.
                         Vector 是同步的
              ||-----ArrayList:底层是数组结构,也是支持长度可变数组的.是不同步                    的.替代了Vector.因为效率高.查询效率很高.  但是增删效率慢
              ||-----LinkedList:底层是链接列表结构,简称链表结构. 是不同步的                       这个结构的好处:对元素的增删非常效率高,查询非常慢

    |---Set: 集: 中的方法和collection一致,只要重点主要它的子类对象即可
            特点:
            1,不包含重复元素. (这点是最大的特点)
            2,这个集合存入元素的顺序和取出元素的顺序不一定一致.(具体的容            器对象数据结构不同,顺序也有不同)
            ||---------HashSet:底层数据结构是哈希表,不保证顺序,是不同步的
   哈希表:提供数组的查询效率而出现的
   将要存储的元素先通过哈希算法算出一个哈希值来标识存储的位置,代   表着元素
   要找元素时,先将该元素通过哈希算法算出哈希值,在通过哈希值到    哈希表去查找
   特点:
   1,不关系元素的顺序
   2,提供了查询效率
   3,不可能出现重复元素,因为哈希值都不同.即使相同,会再次判断   两个元素的equals,内容是否相同,如果内容也相同,不存,如            果内容不同,存储.
   所以哈希表要保证元素的唯一性,必须要依赖于两个方法.
   1,hashCode                  
        2,equals
      
         ||--------TreeSet :可以给Set集合中的元素进行指定顺序的排序
                                  默认情况下,是通过元素的自然顺序排的序
                      它保证元素唯一性的依据是看比较方法的返回结果是0.是0.就                      视为元素相同.不存储
                    TreeSet排序的方式一:让元素自身具备比较性,需要实现                    Comparable接口,覆盖compareTo方法.这种比较方法成为自                   然顺序排序
                     
           如果元素自身不具备比较性或者具备的比较性(自然顺序)不是所需要的
           这是只能用第二种方式:
         TreeSet排序的方式二:让容器自身具备比较性.容器一初始化就具备了比      较功能.因为容器在对象构造时完成的 .通过查阅,有一个构造方法TreeSet(Comparator).在容器初始化时可以指定一个比较器.
需要实现Comparator接口,覆盖compare方法即可
所以这种方式成为比较器排序.

集合的技巧掌握:
明确具体集合对象名称的后缀:
如果后缀是List,都属于List体系,通常也是非同步的
如果后缀是Set,都属于Set体系,通常也是非同步的
这些体系中的其它子类对象,后缀不是所属接口名的,一般都是同步的 比如Vector
这在常用子类对象中通用

明确数据结构
对于jdk1.2版本的子类对象
后缀名是所属的体系
前缀名是技术数据结构的名称
比如:
ArrayList:看到Array,就要明确是数组结构.查询快
LinkedList:看到Link,就要明确链表结构,就要想到add get remove和first last
结合的方法,增删快.

HashSet:看到hash,就要明确是哈希表.查询快,而且唯一性
             就要想到元素必须覆盖hashCode方法和equals方法
TreeSet:看到Tree,就要明确是二叉树,可以对元素排序
   就要想到两种排序方式
自然排序:Comparable接口.覆盖compareTo(一个参数)java.lang
比较器:Comparator接口.覆盖compare(两个参数);java.util
判断元素唯一性的依据就是比较方法的返回结果return 0;


您需要登录后才可以回帖 登录 | 加入黑马