【背诵⑧】保姆级 | 零基础备赛蓝桥杯Java组| 哈希表set的使用

当谈到Java中的哈希表时,我们通常指的是HashSet,它是基于哈希表实现的Set接口的一个类。下面是关于Java哈希表(HashSet)的使用知识点和示例代码:

知识点:

  1. 哈希表(HashSet)特点

    • 不允许存储重复元素。
    • 不保证集合中元素的顺序,即不保证集合中元素的存储顺序和插入顺序一致。
    • 允许存储null元素。
  2. 底层实现

    • HashSet底层是由HashMap实现的,HashSet中的元素被存储为HashMap的key,value统一为一个占位对象(通常为PRESENT)。
  3. 添加元素

    • 使用add()方法向HashSet中添加元素。
  4. 判断元素是否存在

    • 使用contains()方法判断HashSet中是否包含某个元素。
  5. 删除元素

    • 使用remove()方法从HashSet中删除指定元素。
  6. 遍历元素

    • 可以使用增强for循环或迭代器来遍历HashSet中的元素。

示例代码:

java 复制代码
import java.util.HashSet;

public class HashSetExample {
    public static void main(String[] args) {
        // 创建一个HashSet
        HashSet<String> set = new HashSet<>();

        // 添加元素
        set.add("apple");
        set.add("banana");
        set.add("orange");

        // 判断元素是否存在
        boolean containsBanana = set.contains("banana");
        System.out.println("Contains 'banana': " + containsBanana);

        // 删除元素
        set.remove("orange");

        // 遍历集合
        System.out.println("Elements in set:");
        for (String element : set) {
            System.out.println(element);
        }
    }
}

在这个示例中,我们创建了一个HashSet对象,向其中添加了几个元素,然后检查了是否包含指定元素,删除了一个元素,并且最后遍历了HashSet中的所有元素。

当HashSet为空时,可以使用isEmpty()方法进行判断

java 复制代码
import java.util.HashSet;

public class HashSetExample {
    public static void main(String[] args) {
        // 创建一个空的HashSet
        HashSet<String> set = new HashSet<>();

        // 添加元素
        set.add("apple");
        set.add("banana");
        set.add("orange");

        // 判断HashSet是否为空
        if (set.isEmpty()) {
            System.out.println("HashSet is empty");
        } else {
            System.out.println("HashSet is not empty");

            // 遍历集合
            System.out.println("Elements in set:");
            for (String element : set) {
                System.out.println(element);
            }
        }
    }
}
相关推荐
架构师沉默3 小时前
设计多租户 SaaS 系统,如何做到数据隔离 & 资源配额?
java·后端·架构
Java中文社群4 小时前
重要:Java25正式发布(长期支持版)!
java·后端·面试
每天进步一点_JL5 小时前
JVM 类加载:双亲委派机制
java·后端
用户298698530145 小时前
Java HTML 转 Word 完整指南
java·后端
渣哥6 小时前
原来公平锁和非公平锁差别这么大
java
渣哥6 小时前
99% 的人没搞懂:Semaphore 到底是干啥的?
java
J2K6 小时前
JDK都25了,你还没用过ZGC?那真得补补课了
java·jvm·后端
kfyty7256 小时前
不依赖第三方,不销毁重建,loveqq 框架如何原生实现动态线程池?
java·架构
isysc17 小时前
面了一个校招生,竟然说我是老古董
java·后端·面试
道可到11 小时前
Java 反射现代实践速查表(JDK 11+/17+)
java