手撕HashSet

本文介绍了HashSet的基本特性,如无序、不可重复,并指出其内部基于HashMap实现。文章详细讲解了HashSet的常用构造方法,并探讨了其线程不安全的性质。通过分析源码,揭示HashSet如何利用HashMap保证元素的独特性。
摘要由CSDN通过智能技术生成

HashSet概述:

特点:作为Set集合的一种,首先是无序的,不可重复的;允许存放null值;底层封装HashMap;实现是不同步的,线程不安全;

常用构造: public HashSet() :构造一个新的空 set,其底层 HashMap 实例的默认初始容量是 16,加载因子是 0.75。

HashSet内部封装了一个HashMap,并且Map的value值是常量,通过使用map的key值来存储信息,而HashMap的键不能重复,因此HashSet中的元素一定是非重复的。

具体代码如下:

package org.wrf.collections.Set;

import java.util.HashMap;
import java.util.Map;

/**
 * 自定义HashSet
 * Copyright © 2019 WRF. All rights reserved.
 * 功能描述:
 * 实现add方法添加元素
 * @Package: org.wrf.collections.Set 
 * @author: knight   
 * @date: 2019年3月20日 下午9:29:14
 */
public class MyHashSet<E> {
	private Map<E,Object> map;
	private static final Object PRESENT=new Object();
	public MyHashSet() {
		map=new HashMap<E,Object>();
	}
	
	public void add(E e) {
		map.put(e, PRESENT);
	}
	&#
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值