黑马程序员技术交流社区

标题: Map中键的唯一性是如何实现的 [打印本页]

作者: HelloWorld!    时间: 2014-11-12 15:20
标题: Map中键的唯一性是如何实现的
Map中元素保证键的唯一性的原理是什么?是利用键对象自身的比较性么?HashMap中的元素有没有顺序?
作者: leeming    时间: 2014-11-12 17:47
这要看你是Map里面的那个子类,因为Map是接口,接口里面的方法都是抽象方法,都是要被重写的。HashMap底层是底层是首先调用了HashCode方法,算出hash码在哈希表中是否存在。如果存在的话,再调用equals方法,和集合中的对象作遍历比较,如果有相同的对象就会返回true,以key映射的对象就不能存在集合中,如果都不是相同对象就返回false,以key映射的对象就能存在集合中。TreeMap存储对象的原理,可以参照TreeSet集合。
作者: lighter    时间: 2014-11-12 17:56
Map的接口的子类都有keySet()方法,也就是说集合的key(键)其实就是一个Set集合,而我们知道set集合是元素具有唯一性的;
比较的方法同set集合一样,是用元素之间相互进行比较的(compareTo方法,equals方法,hashCode方法)
HashMap中的元素没有顺序的,因为hashCode方法的定义不是一定的,不同的hashCode方法可以算出不同的顺序
作者: 爱学习的小明    时间: 2014-11-12 19:45
HashMap中的键的唯一性是由键的hash值和equals方法来确保唯一性。
TreeMap中键的唯一性是由键实现comparable后复写的compare方法来确保唯一性。




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