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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© HelloWorld! 中级黑马   /  2014-11-12 15:20  /  1743 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Map中元素保证键的唯一性的原理是什么?是利用键对象自身的比较性么?HashMap中的元素有没有顺序?

3 个回复

倒序浏览
这要看你是Map里面的那个子类,因为Map是接口,接口里面的方法都是抽象方法,都是要被重写的。HashMap底层是底层是首先调用了HashCode方法,算出hash码在哈希表中是否存在。如果存在的话,再调用equals方法,和集合中的对象作遍历比较,如果有相同的对象就会返回true,以key映射的对象就不能存在集合中,如果都不是相同对象就返回false,以key映射的对象就能存在集合中。TreeMap存储对象的原理,可以参照TreeSet集合。
回复 使用道具 举报
Map的接口的子类都有keySet()方法,也就是说集合的key(键)其实就是一个Set集合,而我们知道set集合是元素具有唯一性的;
比较的方法同set集合一样,是用元素之间相互进行比较的(compareTo方法,equals方法,hashCode方法)
HashMap中的元素没有顺序的,因为hashCode方法的定义不是一定的,不同的hashCode方法可以算出不同的顺序
回复 使用道具 举报
HashMap中的键的唯一性是由键的hash值和equals方法来确保唯一性。
TreeMap中键的唯一性是由键实现comparable后复写的compare方法来确保唯一性。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马