Java HashSet教程——Java HashSet入门

位置:首页>文章>详情   分类: Java教程 > 编程技术   阅读(417)   2023-06-26 07:54:18

Java HashSet 教程展示了如何使用 Java HashSet 集合。

Java哈希集

HashSet 是一个不包含重复元素的集合。此类为基本操作(添加、删除、包含和大小)提供恒定时间性能。 HashSet 不提供元素排序。 HashSet 没有用于检索元素的 get 方法。

HashSet 实现了 Set 接口。 Set 是一个没有重复项的集合。该接口对数学集合抽象进行建模。

Java HashSet 构造函数

  • HashSet — 构造一个默认的空集。
  • HashSet(int initialCapacity) — 构造一个具有给定初始容量的新空集。随着元素添加到 HashSet,容量会自动增长。
  • HashSet(int initialCapacity, float loadFactor) — 使用给定的初始容量和加载因子构造一个新的空集。
  • HashSet(Collection c) — 构造一个包含指定集合元素的新集合。

E 是元素的类型。

Java 哈希集方法

下表提供了一些 HashSet 方法。

修饰符和类型 方法 描述
空白 清除() 从集合中移除所有元素。
目的 克隆() 返回 HashSet 实例的浅表副本:元素本身未被克隆。
布尔值 包含(对象o) 如果此集合包含指定元素,则返回 true。
布尔值 是空的() 如果此集合为空,则返回 true。
布尔值 添加(E e) 如果指定的元素不存在,则将其添加到此集合中。
布尔值 删除(对象 o) 如果存在,则从此集合中移除指定元素。
布尔值 removeAll(集合 c) 从此集合中移除指定集合中包含的所有元素。
迭代器 迭代器() 返回此集合中元素的迭代器。
整数 尺寸() 返回此集合中的元素数。

在本文中,我们将使用其中的几种方法。

Java HashSet 创建

HashSet 是用 new 关键字创建的。

Set<String> brands = new HashSet<>();

尖括号之间的元素类型。感谢类型推断,无需在声明的右侧提供类型。

Java HashSet 添加元素

add 方法用于将元素添加到集合中。

brands.add("Pepsi");

参数是要添加到集合中的元素。

Java HashSet 确定容量

size 方法返回集合中元素的数量。

int nOfElements = brands.size();

Java HashSet 示例一

以下示例创建一个 HashSet,确定其大小,并将所有元素打印到控制台。

HashSetSize.java
package com.zetcode;

import java.util.HashSet;
import java.util.Set;

public class HashSetSize {

    public static void main(String[] args) {
        
        Set<String> brands = new HashSet<>();
        
        brands.add("Wilson");
        brands.add("Nike");
        brands.add("Volvo");
        brands.add("IBM");
        brands.add("IBM");
        
        int nOfElements = brands.size();
        
        System.out.format("The set contains %d elements%n", nOfElements);
        System.out.println(brands);
    }
}

在代码示例中,我们创建了品牌的 HashSet。每个品牌都必须是独一无二的。例如,不能注册两家 IBM 公司。

brands.add("IBM");
brands.add("IBM");

即使我们尝试添加一个品牌两次,一组也只包含一个 IBM 品牌。

int nOfElements = brands.size();

我们确定 brands 集的大小。

System.out.println(brands);

所有元素都打印到控制台。

The set contains 4 elements
[Nike, Volvo, IBM, Wilson]

Java HashSet isEmpty()

isEmpty 方法检查集合是否包含任何元素。

brands.isEmpty();

该参数是要从此集合中删除的对象(如果存在)。

Java HashSet 删除元素

HashSet 中的元素可以使用 removeremoveAll 方法删除。

brands.remove("Pepsi");

remove 方法从集合中删除指定的元素(如果存在)。

brands.removeAll(collection);

使用 removeAll,我们从 HashSet 中删除参数集合中包含的所有元素。

Java HashSet 实例二

在下面的示例中,我们展示了 addremoveremoveAllisEmpty 方法。

HashSetRemove.java
package com.zetcode;

import java.util.HashSet;
import java.util.Set;

public class HashSetRemove {

    public static void main(String[] args) {
        
        Set<String> brands = new HashSet<>();
        
        brands.add("Wilson");
        brands.add("Nike");
        brands.add("Volvo");
        brands.add("Kia");
        brands.add("Lenovo");
        
        Set<String> brands2 = new HashSet<>();
        
        brands2.add("Wilson");
        brands2.add("Nike");
        brands2.add("Volvo");
        
        System.out.println(brands);
        
        brands.remove("Kia");
        brands.remove("Lenovo");

        System.out.println(brands);
        
        brands.removeAll(brands2);
        
        System.out.println(brands);
        
        if (brands.isEmpty()) {
        
            System.out.println("The brands set is empty");
        }        
    }
}

该示例构建了品牌的 HashSet 并从中删除了元素。

System.out.println(brands);

初始的 HashSet 被打印到控制台。

brands.remove("Kia");
brands.remove("Lenovo");

System.out.println(brands);

我们使用 remove 删除两个元素,并将 brands 的内容打印到控制台。

brands.removeAll(brands2);

System.out.println(brands);

最后,我们从第一组中删除第二组中包含的所有元素。

if (brands.isEmpty()) {

    System.out.println("The brands set is empty");
}

如果 brands 集为空,我们会向终端打印一条消息。

[Nike, Lenovo, Kia, Volvo, Wilson]
[Nike, Volvo, Wilson]
[]
The brands set is empty

Java HashSet clear()

clear 方法从集合中删除所有元素。

brands.clear();

该方法没有参数。

Java HashSet 包含()

如果集合包含指定元素,则 contains 方法返回 true。

brands.contains("Volvo");

参数是要测试其在该集合中是否存在的元素。

Java HashSet 示例三

在下面的示例中,我们使用了addcontainsclearisEmpty 方法。

HashSetContains.java
package com.zetcode;

import java.util.HashSet;
import java.util.Set;

public class HashSetContains {

    public static void main(String[] args) {

        Set<String> brands = new HashSet<>();

        brands.add("Wilson");
        brands.add("Nike");
        brands.add("Volvo");
        brands.add("Kia");
        brands.add("Lenovo");

        if (brands.contains("Wilson")) {

            System.out.println("The set contains the Wilson element");
        } else {

            System.out.println("The set does not contain the Wilson element");
        }

        if (brands.contains("Apple")) {

            System.out.println("The set contains the Apple element");
        } else {

            System.out.println("The set does not contain the Apple element");
        }
        
        brands.clear();
        
        if (brands.isEmpty()) {
            
            System.out.println("The set does not contain any elements.");
        }        
        
    }
}

在示例中,我们检查集合中是否存在两个元素。

if (brands.contains("Wilson")) {

    System.out.println("The set contains the Wilson element");
} else {

    System.out.println("The set does not contain the Wilson element");
}

我们检查集合中是否存在“Wilson”品牌并相应地打印一条消息。

The set contains the Wilson element
The set does not contain the Apple element
The set does not contain any elements.

使用 forEach() 进行 Java HashSet 迭代

我们使用 Java 8 forEach 方法迭代 HashSet 的元素。 forEach 方法对集合中的每个元素执行给定的操作,直到处理完所有元素或操作抛出异常。

HashSetForEach.java
package com.zetcode;

import java.util.HashSet;
import java.util.Set;

public class HashSetForEach {

    public static void main(String[] args) {

        Set<String> brands = new HashSet<>();

        brands.add("Wilson");
        brands.add("Nike");
        brands.add("Volvo");
        brands.add("Kia");
        brands.add("Lenovo");

        brands.forEach(e -> System.out.println(e));
    }
}

使用 forEach 方法,我们遍历集合并将其元素打印到控制台。

带有迭代器的 Java HashSet 迭代

迭代器是用于迭代集合的对象。使用 iterator 检索迭代器。

HashSetForEach.java
package com.zetcode;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class HashSetIterator {

    public static void main(String[] args) {
        
        Set<String> brands = new HashSet<>();

        brands.add("Wilson");
        brands.add("Nike");
        brands.add("Volvo");
        brands.add("Kia");
        brands.add("Lenovo");

        Iterator<String> it = brands.iterator();
        
        while (it.hasNext()) {
            
            String element = it.next();
            
            System.out.println(element);
        }
    }
}

该代码示例遍历 HashSet 的所有元素并将它们打印到控制台。

具有增强 for 循环的 Java HashSet 迭代

Java 5 中引入的增强型 for 循环可用于迭代 HashSet

HashSetEnhancedFor.java
package com.zetcode;

import java.util.HashSet;
import java.util.Set;

public class HashSetEnhancedFor {

    public static void main(String[] args) {
        
        Set<String> brands = new HashSet<>();

        brands.add("Wilson");
        brands.add("Nike");
        brands.add("Volvo");
        brands.add("Kia");
        brands.add("Lenovo");      
        
        for (String brand: brands) {
            
            System.out.println(brand);
        }
    }
}

在示例中,我们使用增强的 for 循环迭代 HashSet

for (String brand: brands) {
    
    System.out.println(brand);
}

在每个 for 循环中,一个新元素被分配给 brand 变量。

在本文中,我们介绍了 Java HashSet 集合。

List 所有 Java 教程.

地址:https://www.cundage.com/article/java-hashset.html

相关阅读

Spring Boot Vue.js 教程展示了如何使用 Vue.js 框架创建一个简单的 Spring Boot。 Vue.js Vue.js 是一个用于构建用户界面的 JavaScript ...
JavaScript 是否已经取代 Java 成为新的“一次编写,随处运行”的编程语言?这完全取决于您的观点。随着 WebAssembly 等技术的出现,Java 可以在新奇的“一次编写,随处编...
Usage of TypeScript,微软基于 JavaScript 的强类型语言, has soared compared to six years ago, according to th...
云莓将基于 Spring 构建的 Java 后端与使用 Lit 构建的 TypeScript 前端相结合,一个快速、响应式的 JavaScript 框架。基于 Vaadin Fusion 的 H...
本博客严重偏向于 GWT(和基于 GWT 的框架),但我们牢记 GWT 将来可能会被其他技术接管,因此我们始终对探索其他平台/框架持开放态度。正如他们所说,多元化可以降低风险。每种编程语言,即使...
Java JSON 教程展示了如何使用 JSON-Java 在 Java 中进行 JSON 序列化和反序列化。 JSON(JavaScript 对象显示法) 是一种轻量级数据交换格式。人类易于读...
JHipster 是一个长期存在且雄心勃勃的混合 Java 和 JavaScript 项目,致力于使用现代反应式前端简化全栈 Java 应用程序的开发。 JHipster 开发团队不断发布新版本...
解析器是强大的工具,使用 ANTLR 可以编写可用于多种不同语言的各种解析器。 在这个完整的教程中,我们将: 解释基础:什么是解析器,它可以用来做什么 查看如何设置 ANTLR 以便在 Java...
Spring Boot JSON 教程展示了如何在 Spring Boot 注释中提供 JSON 数据。 春天 是一个流行的 Java 应用程序框架,弹簧贴 是 Spring 的演变,有助于创建...
根据最近一项全球开发人员调查,在开发人员偏好方面,JavaScript 和 Python 保持了持久力,而 锈 的使用率正在上升. 5 月 4 日的一份题为“开发者国家情况,第 22nd 版”的...