java-HashMap查询性能

来源:互联网 发布:ubuntu下安装pyqt4 编辑:程序博客网 时间:2024/05/17 22:25
public class HashcodeTest {    public static void main(String[] args) {        /**         * 影响散列表(HashMap)查询性能的一个主要原因         * 是在HashMap中产生链表         * 产生链表的主要情况有两种:         * 1.元素过多,概率问题(通过加载因子解决避免扩容rehash(即重新散列))         * 2.作为key元素equals方法与hashcode方法的重写不当         * 当两个key的hashcode值相同时,他们在HashMap内部数组(散列桶)中的位置就相同,         * 若这两个Key的equals方法比较为false时就会产生链表         * 当一个类在重写equals方法是就应当连同重写hashcode方法,并且遵循以下原则:         * 稳定性:hashCode返回的数值应符合hash算法的要求,试想如果有很多对象的hashCode方法返回值都相同,则会大大降低hash表的效率,一般情况可以使用IDE提供的工具自动生成hashCode方法         *          * 一致性:当两个对象equals比较为true时,hashcode值要相等,反过来若两个对象hashcode值相等,equals方法也应当为true,         * 若不然则可能会在HashMap中出现链表影响查找性能         *          * 装载因子及HashMap优化         *          */         }}class Key {    private int x;    private int y;    @Override    public int hashCode() {        final int prime = 31;        int result = 1;        result = prime * result + x;        result = prime * result + y;        return result;    }    @Override    public boolean equals(Object obj) {        if (this == obj)            return true;        if (obj == null)            return false;        if (getClass() != obj.getClass())            return false;        Key other = (Key) obj;        if (x != other.x)            return false;        if (y != other.y)            return false;        return true;    }}
原创粉丝点击