java hashset 实现原理_hashset底层实现原理详解,原理介绍

hashset相信很多人都很了解,但是也有的人表示,自己对于hashset的底层实现原理不是很清楚,那么下面就通过以下的文章内容来了解以下吧。

hashset底层使用了哈希表来支持的,它有一个很显著的特点就是存储快,再向hashset添加元素时,hashset会先调用素的hashCode方法得到元素的哈希值,之后再通过元素的哈希值经过移位等运算,就能够算出这个元素在哈希表当中的存储位置。

假如,算出的元素存储的位置,当前是没有任何元素存储,则,这个元素能够直接存储在该位置上;

假如,算出的元素的存储位置,当前已经存在有其他的元素了,则,会调用这个元素的equals方法和这个位置的元素再比较一次,假如,equals方法返回的是true,则,这个位置上元素视为重复元素,不允许添加,假如,返回的是false,那么就允许添加;class Person

{

String name;

int age;

private void Peron()

{

// TODO Auto-generated method stub

}

public Person(String name, int age)

{

super();

this.name = name;

this.age = age;

}

@Override

public int hashCode()

{

System.out.println("--------");

// TODO Auto-generated method stub

return this.age;

}

@Override

public boolean equals(Object obj)

{

System.out.println("---****----");

Person p = (Person) obj;

return this.age == p.age;

}

@Override

public String toString()

{

// TODO Auto-generated method stub

return "{姓名:" + name + "年龄:" + age + "}";

}

}

public class Demo2

{

public static void main(String[] args)

{

HashSet set = new HashSet();

set.add(new Person("yy", 18));

set.add(new Person("xx", 19));

set.add(new Person("zz", 20));

set.add(new Person("jj", 25));

System.out.println("添加元素成功了嗎?" + set.add(new Person("zhangsan", 18)));

System.out.println("集合的元素:" + set);

}

}

hashset的底层实现原理你都了解了吗?更多hashset常见问题,可以继续的通过奇Q工具网来了解哦。

推荐阅读:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值