介绍:

Java中的HashSet实现Set接口,即它不允许重复。 它在内部由HashMap支持,该哈希表基于哈希原理。

我们可以在HashSet中存储一个值。 默认容量为16,负载系数为0.75,其中:

Load factor = Number of Stored Elements / capacity

Java HashSet是不同步的。 同样,不能保证保留元素的插入顺序。

在本教程中,我们将学习如何使用Java HashSet

实例化

我们可以使用以下构造函数之一创建Java HashSet

HashSet() // default capacity of 16 with a load factor of 0.75
HashSet(int initialCapacity)
HashSet(int initialCapacity, float loadFactor)
HashSet(Collection c)

这些构造函数的用法都很直观。

让我们使用默认构造函数快速创建一个HashSet:

Set<Integer> set = new HashSet<>();

常用方法:

现在让我们看一些可以帮助我们操纵Java HashSet的方法:

1.

它只是将元素添加到给定的集合(如果尚不存在)。 如果该元素已经存在,则add()仅返回false:

System.out.println(set.add(1));  //true
System.out.println(set.add(2));  //true
System.out.println(set.add(3));  //true
System.out.println(set.add(1));  //false - as already present//Note that the order of elements isn't guaranteed
System.out.println(set); //[1, 2, 3]

2.

如果元素在引用集中存在,则contains()方法返回true ,否则返回false

System.out.println(set.contains(1)); //true
System.out.println(set.contains(4)); //false

3.

顾名思义,它将删除元素obj(如果存在)并返回true 。 如果不存在这样的元素,则仅返回false

System.out.println(set.remove(1)); //true
System.out.println(set.remove(4)); //false

请注意, HashSet还继承了removeAll()removeIf()方法,可用于删除值。

4.

对于空集返回true ,否则返回false

System.out.println(set.isEmpty()); // false

5. int

它仅返回给定集中存在的元素数。

6.

clear()方法删除引用集中存在的所有值,从而使其成为空集。

内部实施:

HashSet在内部使用HashMap来存储其元素。 存储在HashSet中的元素被映射为HashMap中的键。 所有这些条目的值字段都包含一个常量PRESENT:

private static final Object PRESENT = new Object();

这是一个虚拟对象。

遍历

我们可以使用以下一种方式来迭代HashSet中的元素:

1.

从Java 8开始,我们可以使用forEach()遍历任何Java 集合:

set.forEach(e -> System.out.println(e));

2.

Java 8还支持forEachRemaining()构造,该构造可与Collection上的任何迭代器一起使用:

Iterator<Integer> itr = set.iterator();itr.forEachRemaining(e -> System.out.println(e));

3.使用

如果我们使用的是Java 7或更低版​​本,我们可以简单地使用迭代器进行迭代:

Iterator<Integer> itr = set.iterator();while(itr.hasNext()) {System.out.println(itr.next());
}

4.扩展

我们还可以使用扩展的for循环遍历元素:

for(Integer e : set) {System.out.println(e);
}

结论:

在本教程中,我们学习了如何创建和使用Java HashSet。 我们也知道Java HashSet在内部使用HashMap来实现它。

成为第一个发表评论的人。

翻译自: https://www.javacodegeeks.com/2019/04/hashset-java.html

Java中的HashSet相关推荐

  1. java中hashset_Java HashSet – Java中的HashSet

    java中hashset Java HashSet is the most popular implementation of Set interface. java.util.HashSet is ...

  2. 用Java中的HashSet写一个学生管理系统(添加、删除、修改、查询学生信息)

    不废话,上代码: 先创建一个Student类: public class Student {private String id;private String name;private String m ...

  3. JAVA中的Hashset类

    HashSet扩展AbstractSet并且实现Set接口.它创建一个类集,该类集使用散列表进行存 储.正像大多数读者很可能知道的那样,散列表通过使用称之为散列法的机制来存储信息. 在散列(hashi ...

  4. Java中的HashSet和TreeSet

    一. 问题 1. HashSet,TreeSet是如何使用hashCode()和equal()方法的 2. TreeMap,TreeSet中的对象何时以及为何要实现Comparable接口? 二. 回 ...

  5. java中Hashset集合删除元素_从Java中的HashSet中删除单个元素

    要从HashSet中删除单个元素,请使用remove()方法. 首先,创建一个HashSet-HashSet hs = new HashSet(); 现在,将元素添加到HashSet-hs.add(& ...

  6. java中的HashSet内部是如何工作的

    HashSet 的内部采用 HashMap来实现.由于 Map 需要 key 和 value,所以HashSet中所有 key 的都有一个默认 value. 类似于HashMap,HashSet 不允 ...

  7. java中的hashset_Java中的HashSet

    java中的hashset 介绍: Java中的HashSet实现Set接口,即它不允许重复. 它在内部由HashMap支持,该哈希表基于哈希原理. 我们可以在HashSet中存储一个空值. 默认容量 ...

  8. 再也不担心问到Java集合了,一文讲透Java中的数据结构

    Java数据结构实现详解 摘要 1 集合框架 1.1 顶层接口Iterable 1.2 Collection接口 2 List 2.1 List接口 2.2 List实现ArrayList 2.2.1 ...

  9. Java中如何克隆集合——ArrayList和HashSet深拷贝

    2019独角兽企业重金招聘Python工程师标准>>> 编程人员经常误用各个集合类提供的拷贝构造函数作为克隆List,Set,ArrayList,HashSet或者其他集合实现的方法 ...

最新文章

  1. 雷达多普勒频率计算公式_非接触式雷达在线测流系统是由什么组成的?
  2. 最常用的15大Eclipse开发快捷键技巧
  3. MySQL第8天:MySQL索引优化分析之SQL慢
  4. oracle+system空间满了,oracle审计导致system表空间爆满的处理方法
  5. 开源 java CMS - FreeCMS2.4 菜单管理
  6. [BUUCTF-pwn]——[Black Watch 入群题]PWN
  7. 计算机网络【4】传输层
  8. 大数据学习笔记11:搭建完全分布式Hadoop
  9. java 下面的while语句退出时_java 下面的while语句退出时
  10. java reduce 分组_使用JAVA8 stream中三个参数的reduce方法对List进行分组统计
  11. Java中遍历Set集合的三种方法
  12. A simple brute force problem.
  13. 【运维工程师主要做哪些工作】运维工程师
  14. EasyExcel 筛选导出
  15. HashMap和Iterator迭代器的小用法
  16. ServU配置网络盘
  17. matlab循环语句详解
  18. 特斯拉股价周三开盘上涨近7% 因Q2交付量创纪录缓解了需求担忧
  19. linux服务器重启原因排查
  20. Protege使用入门

热门文章

  1. Java Jenkins Api
  2. 关于Spring底层原理面试的那些问题,你是不是真的懂Spring?
  3. 永远不要在 MySQL 中使用 UTF-8
  4. Java IO: 字节和字符数组
  5. Spring Cloud是什么,和Dubbo对比呢?
  6. 阿里Druid连接池监控的两个坑
  7. Shell入门(六)之算术运算
  8. 从试卷中悟出的道理……
  9. 19级:班级日常分享,一天一瞬间
  10. 苹果CMS的V10版本后台登录一直提示验证码错误的解决方案