HashSet

1)HashSet 是基于 HashMap 的 Set 接口实现,元素的迭代是无序的,可以使用 null 元素。

创建实例

    /**
* HashSet基于HashMap实现
*/
private transient HashMap<E,Object> map; // 用于在支持的 HashMap 中关联键的傀儡对象
private static final Object PRESENT = new Object(); /**
* 创建一个初始容量为 16,加载因子为 0.75 的 HashMap 支持的 HashSet
*/
public HashSet() {
map = new HashMap<>();
} /**
* 创建一个初始容量为 initialCapacity,加载因子为 loadFactor 的 HashMap 支持的 HashSet
*/
public HashSet(int initialCapacity, float loadFactor) {
map = new HashMap<>(initialCapacity, loadFactor);
} /**
* 创建一个初始容量为 initialCapacity,加载因子为 0.75 的 HashMap 支持的 HashSet
*/
public HashSet(int initialCapacity) {
map = new HashMap<>(initialCapacity);
} /**
* 创建一个初始容量为 initialCapacity,
* 加载因子为 loadFactor 的 LinkedHashMap 支持的 HashSet,
* 主要被 LinkedHashSet 使用。
*/
HashSet(int initialCapacity, float loadFactor, boolean dummy) {
map = new LinkedHashMap<>(initialCapacity, loadFactor);
}

其他方法

    /**
* 获取 HashSet 中所有元素的乱序迭代器
*/
public Iterator<E> iterator() {
return map.keySet().iterator();
} /**
* 获取 HashSet 中元素的总数
*/
public int size() {
return map.size();
} /**
* HashSet 是否为空
*/
public boolean isEmpty() {
return map.isEmpty();
} /**
* 判断此 HashSet 中是否包含指定的值
*/
public boolean contains(Object o) {
return map.containsKey(o);
} /**
* 如果元素不存在,则新增【返回值为 null】,返回值为 true;
* 否则不对 HashSet 做修改,返回值为 false【PRESENT == null】。
*/
public boolean add(E e) {
return map.put(e, HashSet.PRESENT)==null;
} /**
* 从 HashSet 中移除指定的元素
*/
public boolean remove(Object o) {
return map.remove(o)==HashSet.PRESENT;
} /**
* 清空 HashSet
*/
public void clear() {
map.clear();
}

最新文章

  1. 读书笔记--SQL必知必会05--高级数据过滤
  2. CSS 概念 &amp; 作用
  3. [BI基础] 一些不得不了解的概念
  4. docker 容器数据管理
  5. 使用JSP处理用户注册和登陆
  6. TeamViewer 远程时出现:现在无法捕捉画面。这可能是由于恰的用户切换或远程桌面会话断开、最小化
  7. Oracle开始从Java运行时中移除JAR包
  8. HDU4545+计算日期
  9. Learn LIBSVM---a practical Guide to SVM classification
  10. 简单 TCP/IP 服务功能
  11. 12C RMAN 备份参考
  12. HashMap的存储原理
  13. mybatis批量插入
  14. python一个命令开启http服务器
  15. asp.netmvc部署到linux(centos)
  16. linux 应用和发展
  17. Day6 Pyhton基础之文件操作(五)
  18. leetcode958二叉树的完全检验-java
  19. layui数据表格使用(一:基础篇,数据展示、分页组件、表格内嵌表单和图片)
  20. LNMP简要配置

热门文章

  1. 数据库允许空值(null),往往是悲剧的开始 (转)
  2. Paper Reading_ML for system
  3. tortoise svn回滚常用命令
  4. hdu 4633 Who&#39;s Aunt Zhang(polya+逆元)
  5. Codeforces 932 数组环构造 树上LCA倍增
  6. AtCoder Beginner Contest 088 D Grid Repainting
  7. linux运维、架构之路-xtrabackup
  8. 虚拟机安装Windows系统,再安装orcale
  9. 自动配置/切换/查看JDK环境变量
  10. Java中日期