Java学习教程,从入门到精通,Java Set 接口语法知识点及案例代码(64)

news2024/12/20 7:40:53

Java Set 接口语法知识点及案例代码

Java 的 Set 接口是 Collection 接口的一个子接口,它不允许包含重复的元素。Set 接口的主要实现类有 HashSetTreeSetLinkedHashSet 等。下面是一份关于 Java Set 接口的语法知识点及案例代码,内容具体且代码有注释。

Java Set 接口语法知识点

  1. 主要方法

    • boolean add(E e): 添加指定元素到集合中,如果集合已经包含该元素,则返回 false
    • boolean remove(Object o): 从集合中移除指定元素,如果集合包含该元素,则返回 true
    • boolean contains(Object o): 如果集合包含指定元素,则返回 true
    • int size(): 返回集合中的元素个数。
    • void clear(): 清空集合中的所有元素。
    • boolean isEmpty(): 如果集合不包含任何元素,则返回 true
    • Iterator<E> iterator(): 返回集合的迭代器,用于遍历集合中的元素。
  2. 主要实现类

    • HashSet:基于哈希表实现,不允许包含重复元素,且元素是无序的。
    • TreeSet:基于红黑树实现,不允许包含重复元素,且元素是有序的(自然顺序或指定顺序)。
    • LinkedHashSet:具有 HashSet 的所有特性,同时维护元素的插入顺序。

案例代码

下面是一个简单的示例,演示如何使用 HashSetTreeSet

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

public class SetExample {
    public static void main(String[] args) {
        // 使用 HashSet
        Set<String> hashSet = new HashSet<>();
        hashSet.add("Apple");
        hashSet.add("Banana");
        hashSet.add("Cherry");
        hashSet.add("Apple"); // 重复添加,不会生效

        System.out.println("HashSet 内容: " + hashSet);

        // 使用 TreeSet(自然排序)
        Set<String> treeSet = new TreeSet<>();
        treeSet.add("Banana");
        treeSet.add("Apple");
        treeSet.add("Cherry");
        treeSet.add("Date");

        System.out.println("TreeSet 内容: " + treeSet);

        // 使用迭代器遍历 HashSet
        System.out.println("使用迭代器遍历 HashSet:");
        Iterator<String> hashSetIterator = hashSet.iterator();
        while (hashSetIterator.hasNext()) {
            System.out.println(hashSetIterator.next());
        }

        // 使用增强 for 循环遍历 TreeSet
        System.out.println("使用增强 for 循环遍历 TreeSet:");
        for (String fruit : treeSet) {
            System.out.println(fruit);
        }

        // 检查元素是否存在并移除元素
        if (hashSet.contains("Banana")) {
            hashSet.remove("Banana");
        }
        System.out.println("移除 Banana 后的 HashSet: " + hashSet);

        // 清空集合
        treeSet.clear();
        System.out.println("清空后的 TreeSet 是否为空: " + treeSet.isEmpty());
    }
}

代码解释

  1. HashSet 示例

    • 创建一个 HashSet 实例并添加一些字符串元素。
    • 尝试添加重复的元素(如 “Apple”),但 HashSet 不允许重复,因此不会生效。
    • 打印 HashSet 的内容,可以看到元素是无序的。
  2. TreeSet 示例

    • 创建一个 TreeSet 实例并添加一些字符串元素。
    • TreeSet 会对元素进行自然排序,因此打印出的内容是有序的。
  3. 遍历集合

    • 使用迭代器遍历 HashSet,并打印每个元素。
    • 使用增强 for 循环遍历 TreeSet,并打印每个元素。
  4. 检查并移除元素

    • 检查 HashSet 是否包含某个元素(如 “Banana”),如果包含则移除它。
    • 打印移除元素后的 HashSet 内容。
  5. 清空集合

    • 清空 TreeSet,并检查它是否为空。
      通过这些示例代码和解释,初学者可以了解 Java Set 接口的基本使用方法和常用功能。

以下是一些关于Java Set接口的更多案例,这些案例涵盖了Set接口的不同使用场景和实现类。

案例一:使用HashSet存储不重复元素

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

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

        // 添加元素到HashSet中
        set.add("apple");
        set.add("banana");
        set.add("orange");
        set.add("apple"); // 尝试添加重复元素,不会生效

        // 打印HashSet的内容
        System.out.println("HashSet内容: " + set);

        // 检查HashSet是否包含某个元素
        boolean containsApple = set.contains("apple");
        System.out.println("HashSet是否包含apple: " + containsApple);

        // 移除某个元素
        set.remove("banana");
        System.out.println("移除banana后的HashSet内容: " + set);

        // 清空HashSet
        set.clear();
        System.out.println("清空后的HashSet是否为空: " + set.isEmpty());
    }
}

案例二:使用TreeSet进行排序

import java.util.Set;
import java.util.TreeSet;

public class TreeSetExample {
    public static void main(String[] args) {
        // 创建一个TreeSet实例
        Set<Integer> set = new TreeSet<>();

        // 添加元素到TreeSet中,元素会自动排序
        set.add(3);
        set.add(1);
        set.add(4);
        set.add(1); // 尝试添加重复元素,不会生效
        set.add(2);

        // 打印TreeSet的内容
        System.out.println("TreeSet内容: " + set);

        // TreeSet还支持自定义排序,通过Comparator接口实现
        // 以下是一个简单的示例,按元素的降序排序
        Set<Integer> customSortedSet = new TreeSet<>((o1, o2) -> o2 - o1);
        customSortedSet.add(3);
        customSortedSet.add(1);
        customSortedSet.add(4);
        customSortedSet.add(2);

        // 打印自定义排序后的TreeSet内容
        System.out.println("自定义排序后的TreeSet内容: " + customSortedSet);
    }
}

案例三:使用LinkedHashSet保持插入顺序

import java.util.LinkedHashSet;
import java.util.Set;

public class LinkedHashSetExample {
    public static void main(String[] args) {
        // 创建一个LinkedHashSet实例
        Set<String> set = new LinkedHashSet<>();
        // 添加元素到LinkedHashSet中,元素会保持插入顺序
        set.add("apple");
        set.add("banana");
        set.add("orange");
        set.add("grape");

        // 打印LinkedHashSet的内容
        System.out.println("LinkedHashSet内容: " + set);

        // 遍历LinkedHashSet并打印每个元素
        for (String fruit : set) {
            System.out.println(fruit);
        }
    }
}

案例四:使用Set接口进行集合运算

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

public class SetOperationsExample {
    public static void main(String[] args) {
        // 创建两个HashSet实例
        Set<String> set1 = new HashSet<>();
        set1.add("apple");
        set1.add("banana");
        set1.add("orange");

        Set<String> set2 = new HashSet<>();
        set2.add("banana");
        set2.add("grape");
        set2.add("orange");

        // 并集运算
        Set<String> unionSet = new HashSet<>(set1);
        unionSet.addAll(set2);
        System.out.println("并集: " + unionSet);

        // 交集运算
        Set<String> intersectionSet = new HashSet<>(set1);
        intersectionSet.retainAll(set2);
        System.out.println("交集: " + intersectionSet);

        // 差集运算(set1 - set2)
        Set<String> differenceSet = new HashSet<>(set1);
        differenceSet.removeAll(set2);
        System.out.println("差集: " + differenceSet);
    }
}

以上案例涵盖了Java Set接口的基本使用方法和常见操作,包括添加元素、检查元素是否存在、移除元素、清空集合、排序、保持插入顺序以及进行集合运算等。这些案例可以帮助初学者更好地理解和掌握Java Set接口的相关知识。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2262580.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

3D和AR技术在电商行业的应用有哪些?

3D展示和AR技术在电商行业的应用为消费者带来了更为直观、沉浸式的购物体验&#xff0c;显著提升了商品展示效果和销售转化率。以下是3D和AR技术在电商行业的具体应用&#xff1a; 1、商品3D展示&#xff1a; 通过3D技术&#xff0c;商品可以在电商平台上以三维形式呈现&…

springboot中Controller内文件上传到本地以及阿里云

上传文件的基本操作 <form action"/upload" method"post" enctype"multipart/form-data"> <h1>登录</h1> 姓名&#xff1a;<input type"text" name"username" required><br> 年龄&#xf…

GraphReader: 将长文本结构化为图,并让 agent 自主探索,结合的大模型长文本处理增强方法

GraphReader: 将长文本结构化为图&#xff0c;并让 agent 自主探索&#xff0c;结合的大模型长文本处理增强方法 论文大纲理解为什么大模型和知识图谱不够&#xff1f;还要多智能体 设计思路数据分析解法拆解全流程核心模式提问为什么传统的长文本处理方法会随着文本长度增加而…

HTTP接口报错详解与解决 200,500,403,408,404

前言&#xff1a; 仅做学习记录&#xff0c;侵删 背景 当后端编写接口时&#xff0c;经常需要对接口使用ApiFox或者PostMan进行测试&#xff0c;此时就会出现各种各样的报错&#xff0c;一般都会包括报错编码&#xff1a;200,400,401等。这个状态码一般是服务器所返回的包含…

智能光学计算成像技术与应用

智能光学计算成像是一个将人工智能&#xff08;AI&#xff09;与光学成像技术相结合的前沿领域&#xff0c;它通过深度学习、光学神经网络、超表面光学&#xff08;metaphotonics&#xff09;、全息技术和量子光学等技术&#xff0c;推动光学成像技术的发展。以下是智能光学计算…

QT基础和练习

基础应用&#xff1a;MyWidget.cpp #include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {this->resize(960,720); /*//qDebug//1、类似与printf&#xff08;&#xff09;的使用qDebug("%s","hello world");//2、类…

【数据集】生菜病害检测数据集530张6类YOLO+VOC格式

数据集格式&#xff1a;VOC格式YOLO格式 压缩包内含&#xff1a;3个文件夹&#xff0c;分别存储图片、xml、txt文件 JPEGImages文件夹中jpg图片总计&#xff1a;530 Annotations文件夹中xml文件总计&#xff1a;530 labels文件夹中txt文件总计&#xff1a;530 标签种类数&#…

如何用波特五力模型分析竞争环境?

这是个好问题啊&#xff01; 你要用波特五力模型分析竞争环境&#xff0c;就得先知道—— 什么是波特五力模型&#xff1f; 波特五力模型&#xff08;Porters Five Forces&#xff09;是由哈佛大学教授迈克尔波特&#xff08;Michael Porter&#xff09;提出的一个行业竞争分…

[spring]实例化对象(静动态工厂)

在前面文章的例子当中&#xff0c;我们都创建了Bean对象。spring里常用的获取类的实例化对象有几种方式&#xff1a;构造函数获取Bean对象、静态和动态工厂获取Bean对象、实现FactoryBean规范。 因为一些步骤没有什么别的不同&#xff0c;所以我不会重复去讲&#xff0c;届时会…

三、ubuntu18.04安装docker

1.使用默认ubuntu存储库安装docker 更新软件存储库 更新本地软件数据库确保可以访问最新版本。打开终端输入&#xff1a;sudo apt-get update 卸载旧版本的docker 建议继续之前卸载任何旧的docker软件。打开终端输入&#xff1a;sudo apt-get remove docker docker-engine …

Java JDK8之前传统的日期时间-Date、SimpleDateFormat、Calendar

1. Date (1) Date代表的是日期和时间 (2) 常见构造器和常用方法 构造器说明public Date()创建一个Date对象&#xff0c;代表系统当前日期和时间public Date(long time)根据传入的时间毫秒值创建一个Date对象 方法说明public long getTime()返回从1970.1.1 00:00:00到此时的毫…

Android简洁缩放Matrix实现图像马赛克,Kotlin

Android简洁缩放Matrix实现图像马赛克&#xff0c;Kotlin 原理&#xff0c;通过Matrix把一个原图缩小到原先的1/n&#xff0c;然后再把缩小后的小图放大n倍&#xff0c;自然就是马赛克效果&#xff08;相当于是放大后像素“糊”成一片了&#xff09;。 import android.content.…

Luma 视频生成 API 对接说明

随着 AI 的应用变广&#xff0c;各类 AI 程序已逐渐普及。AI 已逐渐深入到人们的工作生活方方面面。而 AI 涉及的行业也越来越多&#xff0c;从最初的写作&#xff0c;到医疗教育&#xff0c;再到现在的视频。 Luma 是一个专业高质量的视频生成平台&#xff0c;用户只需上传素…

解锁移动设备管理新技能-RayLink远程控制手机

在这个忙碌的现代社会中&#xff0c;智能手机已经成为我们生活的重要组成部分&#xff0c;它们不再仅仅是通讯工具&#xff0c;而是我们日常生活的核心。随着这种变化&#xff0c;远程控制手机的技术应运而生&#xff0c;为我们开启了一个全新的移动设备管理时代。今天&#xf…

<论文>初代GPT长什么样?

一、摘要 今天我们聊一下论文《Improving Language Understanding by Generative Pre-Training》以及它所提出来的预训练模型——GPT1。我们知道Bert在出道那会儿红极一时&#xff0c;但实际上GPT1比Bert还要早几个月就出道了&#xff0c;而且同样刷新了当时的多个任务记录。GP…

flutter 快速实现侧边栏

首先我们写一个侧边栏工具类&#xff0c;示例如下&#xff1a; import package:flutter/material.dart;class Sidebar extends StatelessWidget {overrideWidget build(BuildContext context) {return Drawer(child: ListView(padding: EdgeInsets.zero,children: <Widget&…

Odoo:免费开源ERP的AI技术赋能出海企业电子商务应用介绍

概述 伴随电子商务的持续演进&#xff0c;客户对于便利性、速度以及个性化服务的期许急剧攀升。企业务必要探寻创新之途径&#xff0c;以强化自身运营&#xff0c;并优化购物体验。达成此目标的最为行之有效的方式之一&#xff0c;便是将 AI 呼叫助手融入您的电子商务平台。我们…

[SZ901]FPGA程序固化工具使用方法

工具为脚本形式&#xff0c;前期需进行vivado版本&#xff0c;下载器端口配置 1&#xff0c;编辑 【SZ901程序固化工具.bat】&#xff0c;设置软件版本 修改软件版本和安装路径 2&#xff0c;设置下载器端口&#xff08;SZ901->USER_TCL->FlashBurn_Config.tcl&#x…

详解Redis的String类型及相关命令

目录 SET GET MGET MSET SETNX SET和SETNX和SETXX对比 INCR INCRBY DECR DECRBY INCRBYFLOAT APPEND GETRANGE SETRANGE STRLEN 内部编码 SET 将 string 类型的 value 设置到 key 中。如果 key 之前存在&#xff0c;则覆盖&#xff0c;⽆论原来的数据类型是什么…

【时间之外】IT人求职和创业应知【71】-专利费

目录 2025 ICT产业趋势年会召开&#xff0c;2024年度ICT十大新闻重磅揭晓 海纳致远数字科技申请定制化插件驱动的数据分析专利 阿波罗智联取得语音数据的处理方法、装置、设备和存储介质专利 心勿贪&#xff0c;贵知足。 感谢所有打开这个页面的朋友。人生不如意&#xff0…