Java集合框架(三)-HashSet

打印 上一主题 下一主题

主题 829|帖子 829|积分 2487

大佬的理解-> Java集合值HashSet 
1、HashSet特点

存放的元素是无序的(不保证添加元素的顺序)元素唯一(不可以重复)可以存null,但是只能存放1个虽然set集合不保证添加元素的顺序,但是集合中存放的元素顺序其实是固定的,根据元素的hash值确定的顺序2、HashSet原理分析

HashSet底层,是借助HashMap实现的;
3、HashSet初始化
  1. Set<String> strSet = new HashSet<>();
复制代码
4、HashSet常用方法

方法说明size()结合元素个数contains(Object o)集合是否包含某个元素4.1 size()
  1. // 获取set集合元素个数方法:size()
复制代码
4.2 contains(Object o)
  1. // 判断set集合中是否包含某个元素方法:contains(元素)
复制代码
4.3  list的其它常用方法,set中也有,不再介绍
5、HashSet遍历

5.1 迭代器遍历
  1. Set<String> carSet = new HashSet<>();
  2. carSet.add("Bmw325");
  3. carSet.add("BenzC200");
  4. carSet.add("AudiA4");
  5. // 方式一:迭代器遍历
  6. Iterator<String> iterator = carSet.iterator();
  7. while(iterator.hasNext()){
  8.     System.out.println(iterator.next());
  9. }
复制代码
5.2 增强for循环
  1. // 方式二:增强for循环
  2. for (String car : carSet) {
  3.    System.out.println(car);
  4. }
复制代码
运行结果:
  1. BenzC200
  2. AudiA4
  3. Bmw325
复制代码
6、HashSet集合是如何确定元素唯一的

6.1 HashSet添加一个元素的过程

此处原文链接

  • 调用对象的hashCode()方法获取对象的哈希值;
  • 根据对象的哈希值计算对象的存储位置;
  • 判断该位置是否有元素,如果没有元素则将元素存储到该位置;如果有元素则遍历该位置的所有元素,和新存入的元素比较哈希值是否相同,如果都不相同则将元素存储到该位置;如果有相同的,则调用equals()方法比较对象内容是否相等;
  • 如果返回false则将元素存储到该位置,如果返回true则说明元素重复,不存储;
6.2 流程图


HashSet集合存储元素:要保证元素唯一性,需要重写hashCode()和equals()方法。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

魏晓东

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表