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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵永康 中级黑马   /  2012-9-19 16:48  /  1474 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本人是自学毕老师的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方法。

1 个回复

倒序浏览
还不多。比较详细。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马