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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wupingtanlu 中级黑马   /  2012-5-13 14:14  /  1834 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  在集合这个框架中  是不是map接口下面的和set下面的 哪些集合要用到编辑器呢?是不是主要是添加方法呢?
  还有那个哈希值是不是用到hashmap集合中才用到你    哪些集合的哪些方法会自动调用equals和hashcode方法呢?
  能不能讲解清楚点,谢谢了!

3 个回复

正序浏览

HashSet:底层的数据结构是哈希表,是线程不同步的,
HashSet      
是通过元素的两个方法,hashCode()和Equals()来完成,如果元素的hashCode相同,才会判断equals是否为true,如果元素的hashCode不同不会判断equals方法,所以要添加到HashSet中的元素必须重写Object的hashCode()和equals()方法。而且HashSet的Contains()和remove(Object o);依赖的也是元素的hashCode()和equals()方法
TreeSet:底层数据结构是:二叉树结构,可以对元素进行排序。
        TreeSet中的元素类型的特点:往TreeSet中存储的元素,必须具备可比较性,因为具有可比较性才能排序,所以这些类型都必须实现java.lang.Compatable接口,并复写其compareTo方法,当将元素存入时Jvm会自动调用此方法来确定存入元素的位置。这种排序方式称为自然顺序(或默认顺序)。也可以根据排序的具体需要定义比较规则,此时就要定义一个比较器类,此类必须实现Java.Util.Comparatorl接口,并实实现其comapre方法,在new TreeSet时创建一个词比较器类的对象作为参数传入TreeSet的构造函数,此时TreeSet的排序就是按比较器类中第一的规则排的序。

Map中存放的是key-value对,其他的都跟Set体系的集合一样,说他们都可以通过转成Set集合来遍历
HashTable:底层是哈希表,不可以存储null的键或值,是线程同步的,效率低 jdk1.0
HashMap:底层是哈希表,可以存储null的键或值,是线程不同步的,效率高 jdk1.2
HashTable和HashMap的数据结构都是哈希表,所以他们与HashSet是一样的。,只不过他们存的是键值对

TreeMap:底层是二叉树结构的,线程不同步,可以给map中的元素按照键进行排序
TreeMap和TreeSet底层都是是二叉树结构的。所以依赖的方法是一样的,只不过TreeMap是按Key来排序的




回复 使用道具 举报
本帖最后由 李哲 于 2012-5-13 19:43 编辑

能不能问的清楚点啊?

List:判断元素是否相同,依据的是元素的equals方法。
|--HashSet:数据结构是哈希表。线程是非同步的。
                保证元素唯一性的原理:判断元素的hashCode值是否相同
                如果相同,还会继续判断元素的equals方法,是否为true
|--TreeSet:可以对Set集合中的元素进行排序
                TreeSet排序的第一种方式:让元素自身具备比较性。
                元素需要实现comparable接口,覆盖compareTo方法
                这种方式也称为元素的自然顺序,或者叫默认顺序。

                TreeSet的第二种排序方式。
                当元素自身不具备比较性时,或者具备的比较性不是所需要的。
                这是就需要让集合自身具备比较性。
                在集合初始化时,就有了比较方式。

Map和Set一样,不过使用的是键的方式。


            
回复 使用道具 举报
当使用HashSet时,hashcode()方法就会得到调用,判断已存储在集合中的对象的hashcode值是否与降增加对象的hashcode值是否一致;如果不一致就直接加进去;如果一致,再进行equals方法的比较;equals方法如果返回true,表示该对象已经加进去了,就不会再增加新的对象,如果equals方法返回false就加进去。
如果数据要存储在HashsSet中通常需要重写对象的equals方法和hashcode方法;因为Object类的hashcode方法底层调用的是其equals方法,通俗点将就是两个方法完全一样。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马