黑马程序员——java集合框架之List,Set

集合框架
  1.数组与集合的不同
    数组长度是固定的,集合长度是可变的
    数组中可以存储基本数据类型,集合只存储对象
    集合可以存储不同类型的对象
      
  2.java集合类中有两个顶层接口Collection和Map,下面是对Collection的一些总结:

     集合中常用方法:
     add方法的参数类型为Object,以便于接受任意类型的对象
     集合中存储的都是对象的引用(或者说地址)

     迭代器是集合取出元素的方式,此方法是定义在集合的内部,这样取出方式就可以直接访问集合内部的元素
     而每一个容器的数据结构不同,所以取出的动作细节也不一样,但是都有共性内容:判断和取出
     那么可以将共性抽取

     这些内部类都符合一个规则,该规则是Iterator.
     通过一个对对外提供的方法iterator()来获取集合的取出对象      
     
     方法:add(Object obj)  添加元素
           remove(Object obj)删除元素
           contains(Object obj)判断元素是否存在
           isEmpty()判断集合是否为空 
           size()获取集合长度
           retainAll()取交集,只保留于指定集合中元素相同的元素
           iterator()  获取迭代器,用于取出集合中的元素

   3. Collection下面的子接口:(List和Set)

  • List:元素师有序的,元素可以重复,因为该集合体系有索引

       LinkedList   链表数据结构
       HashSet   底层数据结构是哈希表

    HashSet是如何保证元素唯一性的呢?
     是通过元素的两个方法hashCode 和equals来完成
     如果元素的HashCode 值相同,才会判断equals是否为true 
     如果HashCode值不相同,才会进行equals
    hashCode()和equals()是集合内部顶层自己调用的
    判断元素是否存在,以及删除操,以来的方法是元素的hashCode和equals()方法。
    一般开发用到HashSet时,一般都会复写hashCode()和equals()方法
   
   (2)---TreeSet  底层数据结构是二叉树
               保证元素唯一性的依据:compareTo()方法的返回值是否为0
     
      TreeSet排顺序的第一种方式:让元素自身具备比较性,元素要实现Comparator接口,覆盖compareTo()方法
      这种方式也成为元素的自然顺序,或者叫做默认顺序
     
      TeeeSet的第二种排序方式:当元素自身不具备比较性时,或者具备的比较性不是所需要的
      这时就需要让集合自身具备比较性
      自己和初始化时,就赋予比较方式。
        即定义一个比较器,将比较器对象作为参数传递给TreeSet集合的构造函数

      当两种排序方式都存在时,以比较器为主,定义一个类实现Comparator接口,覆盖compare()方法

posted on 2015-03-27 21:26  佳期如梦  阅读(119)  评论(0编辑  收藏  举报

导航