[19]-容器(集合)_Set_HashSet底层源码

创建HashSet时,底层创建的实际上是一个HashMap对象

public class TestHashSet {
  /***
   * HashSet底层源码分析
   *  private transient HashMap<E,Object> map;
   *   private static final Object PRESENT = new Object();
   *  public HashSet() {
             map = new HashMap<>();//创建HashSet时,底层创建的是一个HashMap对象
     }
     public boolean add(E e) {
                     key-->e ,value-->PRESENT ,是一个Object类型的对象
                     map集合中的所有value都是统一的Object类型对象
        return map.put(e, PRESENT)==null;

     }
     public int size() {
        return map.size();
    }

     public boolean contains(Object o) {
        return map.containsKey(o);  //在map集合中判断key是否存在
    }
    public Iterator<E> iterator() {
          //获取map集合中所有的key的集合,再得到迭代器对象
        return map.keySet().iterator();
    }
    HashSet使用了HashMap的数据结构,
         底层都是哈希表 (顺序表+链表)
   * @param args
   */
  public static void main(String[] args) {
    //HashSet底层数组结构使用的是hash表  ,主结构数组, +链表
    //创建集合对象
    HashSet hs=new HashSet();
    hs.add("hello");
    hs.add("world");
    hs.add("java");
    System.out.println(hs.add("world"));
    System.out.println("集合中元素的个数:"+hs.size());
    System.out.println(hs);
    System.out.println(hs.contains("java")+"\t"+hs.contains("sql"));
    //使用迭代器遍历元素
    Iterator ite=hs.iterator();
    while(ite.hasNext()){
      System.out.println(ite.next());
    }

  }
}
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常用方法的使用,希望对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值