常用集合Set-HashSet

本文深入探讨了HashSet数据结构的实现原理,介绍了其基于HashMap的底层结构,并详细解释了add和remove操作的具体实现过程。

Set的数据结构

底层是基于HashMap存在的

// 无参构造器,调用HashMap的无参构造方法
public HashSet() {
        map = new HashMap<>();
    }

// 调用有参构造器,指定初始大小
 public HashSet(int initialCapacity) {
        map = new HashMap<>(initialCapacity);
    }

add元素

key为存储的元素,每次新建一个Object作为key

private static final Object PRESENT = new Object();
private transient HashMap<E,Object> map;


public boolean add(E e) {
        return map.put(e, PRESENT)==null;
 }

remove元素

private transient HashMap<E,Object> map;

public boolean remove(Object o) {
        return map.remove(o)==PRESENT;
    }
HashSetJava集合框架中的一个类,它实现了Set接口,可以用于存储一组没有顺序、不重复的元素。下面介绍HashSet常用方法的使用。 1. add(Object obj):向集合中添加元素。 示例代码: ```java Set<String> set = new HashSet<String>(); set.add("apple"); set.add("banana"); set.add("orange"); System.out.println(set); // 输出 [orange, banana, apple] ``` 2. remove(Object obj):从集合中删除指定元素。 示例代码: ```java Set<String> set = new HashSet<String>(); set.add("apple"); set.add("banana"); set.add("orange"); set.remove("banana"); System.out.println(set); // 输出 [orange, apple] ``` 3. contains(Object obj):判断集合中是否包含指定元素。 示例代码: ```java Set<String> set = new HashSet<String>(); set.add("apple"); set.add("banana"); set.add("orange"); System.out.println(set.contains("banana")); // 输出 true System.out.println(set.contains("pear")); // 输出 false ``` 4. size():获取集合中元素的个数。 示例代码: ```java Set<String> set = new HashSet<String>(); set.add("apple"); set.add("banana"); set.add("orange"); System.out.println(set.size()); // 输出 3 ``` 5. clear():清空集合中的所有元素。 示例代码: ```java Set<String> set = new HashSet<String>(); set.add("apple"); set.add("banana"); set.add("orange"); set.clear(); System.out.println(set); // 输出 [] ``` 6. isEmpty():判断集合是否为空。 示例代码: ```java Set<String> set = new HashSet<String>(); System.out.println(set.isEmpty()); // 输出 true set.add("apple"); System.out.println(set.isEmpty()); // 输出 false ``` 以上就是HashSet常用方法的使用,希望对你有所帮助。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值