黑马程序员技术交流社区

标题: 本人关于学习集合框架的一点小总结 [打印本页]

作者: 赵永康    时间: 2012-9-19 16:48
标题: 本人关于学习集合框架的一点小总结
本人是自学毕老师的java基础知识的,看完一遍后,感觉对集合那块特别的乱...特花了点时间总结了一下!希望对初学者有帮助
集合框架collection  和map是并列的
collection
        --list  此集合是有序的,存入其中的元素是可以重复的
          --ArrayList 底层是数组数据结构,查询速度较快,增删速度慢 线程是不同步的
          --LinkedList 底层的数据结构是链表数据结构,查询速度较慢,增删较快,线程是不同步的
          --Vector 底层数据结构是数组结构,线程是同步的  效率太慢
        --set  此集合是无顺序的,存入其中的元素是不可以重复的
          --HashSet--底层数据结构式哈希表,对于类似于String的元素,存入其中会自动调用
                     hashCode()方法和equals()方法,这两个方法都是Object的方法  来确保
                     存入元素的唯一性。当自定义元素的时候,我们一般都要复写Object的这
                     两个方法。  
          --TreeSet  底层是二叉树结构,可以对存入的元素进行排序。String默认的方法是按照
                     字典的自然顺序。
                     但是,对于存入的自定义元素必须implements Coparable接口、复写
                     compareTo()方法,其目的就是为了让存入的元素具有比较性。
                     这就是TreeSet集合的特点。
List集合和Set集合的不同在于hashset集合会自动调用其这两个方法,从而确保元素的唯一性
    ArrayList集合一般都要复习其equals方法然后自定义方法来通过contains方法来调用equals
    方法,从而确保存入元素的唯一性。  
判断(contains)和删除(remove)元素:ArrayList依据的元素的equals方法
                HashSet依据的是他的hashCode和equals方法


存入TreeSet集合中的自定义元素
由于TreeSet集合底层数据结构式二叉树结构,存入的元素是有序的
所以对自定义元素的存贮方法有两种:
第一种方法就是让元素自身具备比较性:实现Coparable接口,复写其中的ccpareTo方法。
第一种方法就是集合自身具备比较性:定义一个比较器,将比较器传入集合的构造函数中
                                定义比较器的方法:实现Comparator接口,复写compare方法。

现在我们自定义一个类,就需要复写hashCode方法、equals方法,实现Comparable接口,复写compareTo方法
其中复写hashCode方法、equals方法是为了将自定义类存入到HashSet集合中,
实现Comparable接口,复写compareTo方法是为了将自定义类存入到TreeSet集合中。
复写equals方法是将自定义类存入到ArrayList集合中。
一般情况还应该复写toString方法。


作者: 明光照    时间: 2012-9-19 20:32
还不多。比较详细。




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