Java零基础-集合:TreeSet

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛

  今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。

  我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把自己所学到所会的,通过文章的形式进行输出,希望以这种方式帮助到更多的初学者或者想入门的小伙伴们,同时也能对自己的技术进行沉淀,加以复盘,查缺补漏。

小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对作者我写作道路上最好的鼓励与支持!

Java零基础-TreeSet

前言

在Java集合框架中,TreeSet是一个实现了Set接口的有序集合,它能够根据元素的自然顺序或者构造时提供的Comparator对象来对元素进行排序。对于Java零基础的学习者来说,理解TreeSet的用法对于掌握Java集合操作非常重要。

摘要

本文将详细介绍Java中的TreeSet,包括其特性、操作方法、应用场景、优缺点分析,并通过代码示例和测试用例,帮助Java零基础的学习者快速掌握TreeSet的使用。

简介

TreeSet底层是基于红黑树实现的,它能够确保元素处于排序状态。与HashSet相比,TreeSet提供了有序的Set集合。

源代码解析

以下是使用TreeSet的一个简单示例:

import java.util.SortedSet;
import java.util.TreeSet;public class TreeSetExample {public static void main(String[] args) {// 创建TreeSet实例SortedSet<String> fruits = new TreeSet<>();// 向TreeSet添加元素fruits.add("Apple");fruits.add("Banana");fruits.add("Cherry");// 打印TreeSetfor (String fruit : fruits) {System.out.println(fruit);}// 获取TreeSet的第一个和最后一个元素System.out.println("First fruit: " + fruits.first());System.out.println("Last fruit: " + fruits.last());// 移除元素fruits.remove("Banana");for (String fruit : fruits) {System.out.println(fruit);}// 获取TreeSet的大小System.out.println("Number of fruits: " + fruits.size());}
}

应用场景案例

  • 有序数据存储:需要元素保持特定顺序的集合,如按字母顺序存储字符串。
  • 范围查询:需要快速检索某个范围内的元素。

优缺点分析

  • 优点
    • 保证了元素的有序性。
    • 提供了高效的范围查询功能。
  • 缺点
    • HashSet相比,插入和删除操作的性能略低。
    • 需要更多的内存来维持元素的排序状态。

类代码方法介绍

以下是TreeSet中一些常用方法的介绍:

  • add(E e): 向集合添加一个元素。
  • remove(Object o): 从集合中移除一个元素。
  • contains(Object o): 检查集合是否包含指定元素。
  • first(): 返回集合的第一个元素。
  • last(): 返回集合的最后一个元素。
  • size(): 返回集合中元素的数量。

测试用例

以下是使用main函数编写的测试用例示例:

import java.util.SortedSet;
import java.util.TreeSet;public class TreeSetTest {public static void main(String[] args) {SortedSet<Integer> numbers = new TreeSet<>();numbers.add(3);numbers.add(1);numbers.add(2); // TreeSet会自动排序// 测试添加元素System.out.println("添加元素后的集合: " + numbers);// 测试元素是否存在System.out.println("集合是否包含元素2: " + numbers.contains(2));// 测试移除元素numbers.remove(2);System.out.println("移除元素2后的集合: " + numbers);// 测试获取第一个和最后一个元素System.out.println("第一个元素: " + numbers.first());System.out.println("最后一个元素: " + numbers.last());// 测试集合大小System.out.println("集合大小: " + numbers.size());}
}

代码解析:

这段Java代码演示了TreeSet的基本操作,包括添加元素、检查元素是否存在、移除元素、获取第一个和最后一个元素以及获取集合大小。以下是对代码的逐行解析:

import java.util.SortedSet;
import java.util.TreeSet;

导入Java的SortedSet接口和TreeSet实现类。

public class TreeSetTest {

定义了一个名为TreeSetTest的公共类。

    public static void main(String[] args) {

定义了程序的入口点main方法,这个方法是static的,可以在不创建类实例的情况下调用。String[] args是传递给main方法的参数数组。

        SortedSet<Integer> numbers = new TreeSet<>();

声明了一个SortedSet接口的引用numbers并初始化为Integer类型的元素的TreeSet实例。TreeSet会自动对元素进行排序。

        numbers.add(3);numbers.add(1);numbers.add(2);

使用add方法向TreeSet中添加了三个整数:3、1 和 2。由于TreeSet保证元素有序,实际的顺序将是 [1, 2, 3]

        // 测试添加元素System.out.println("添加元素后的集合: " + numbers);

打印添加元素后的集合内容。此时集合应该包含 {1, 2, 3}

        // 测试元素是否存在System.out.println("集合是否包含元素2: " + numbers.contains(2));

使用contains方法检查集合中是否包含元素2,并打印结果。由于集合中包含2,所以结果为true

        // 测试移除元素numbers.remove(2);

使用remove方法移除集合中的元素2。

        System.out.println("移除元素2后的集合: " + numbers);

打印移除元素2后的集合内容。此时集合应该包含 {1, 3}

        // 测试获取第一个和最后一个元素System.out.println("第一个元素: " + numbers.first());System.out.println("最后一个元素: " + numbers.last());

使用first方法获取并打印集合的第一个元素(1),使用last方法获取并打印最后一个元素(3)。

        // 测试集合大小System.out.println("集合大小: " + numbers.size());

打印集合的当前大小。移除元素2后,集合大小应该为2。

    }
}

结束main方法和TreeSetTest类的定义。

当这段代码运行时,它将展示如何在TreeSet中添加元素、检查元素是否存在、移除元素、获取第一个和最后一个元素以及获取集合的大小。这是对TreeSet操作的基础演示,适合初学者理解TreeSet的基本用法。

全文小结

本文介绍了Java中的TreeSet,包括它的基本用法、优缺点、常用方法和实际应用场景。通过代码示例和测试用例,我们学习了如何在实际编程中使用TreeSet

总结

TreeSet是Java集合框架中一个非常有用的数据结构,特别适合需要有序集合的场景。理解TreeSet的工作原理和特性,可以帮助我们在解决实际问题时做出合适的选择。希望本文能帮助Java零基础的学习者快速掌握TreeSet的使用。

… …

文末

好啦,以上就是我这期的全部内容,如果有任何疑问,欢迎下方留言哦,咱们下期见。

… …

学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!

wished for you successed !!!


⭐️若喜欢我,就请关注我叭。

⭐️若对您有用,就请点赞叭。

⭐️若有疑问,就请评论留言告诉我叭。

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

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

相关文章

SQL基础:掌握数据查询与操作的核心技能(四)

引言&#xff1a;数据操作的语言艺术 在前一章节《数据库与表的基本操作》中&#xff0c;我们深入了解了如何创建、管理数据库和表&#xff0c;构建了数据存储的基础框架。本章节&#xff0c;我们将深入探索SQL语言&#xff0c;它是数据库管理系统的通用语言&#xff0c;用于数…

SpringBoot集成Druid数据库连接池并配置可视化界面和监控慢SQL

pom.xml <!-- Druid 数据库连接池 --><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.23</version></dependency>application.yml spring:jackson:date-…

明星周边物品交易购物系统

摘 要 随着明星文化的兴起和粉丝经济的蓬勃发展&#xff0c;明星周边产品的市场需求日益增长。明星周边物品包括各种与明星相关的商品&#xff0c;如T恤、海报、手办、签名照等&#xff0c;它们成为粉丝们表达对明星喜爱和支持的方式之一。通过“星光璀璨”来形象化地表达明星…

Flask的 preprocess_request

理解 Flask 类似框架中的 preprocess_request 方法 在 Flask 类似的 web 框架中&#xff0c;preprocess_request 方法是一个关键组件。它在请求被分派之前调用&#xff0c;用于执行一些预处理操作。让我们一步一步来理解这个方法的工作原理。 1. 方法概述 首先&#xff0c;我…

【Android面试八股文】说一说Handler的sendMessage和postDelay的区别?

文章目录 一、`sendMessage` 方法1.1 主要用法1.2 适用场景二、`postDelayed` 方法2.1 主要用法2.2 适用场景三、 区别总结3.1 区别3.2 本质上有差别吗?四、实例对比4.1 使用`sendMessage`4.2 使用`postDelayed`五、结论Handler类在Android中用于消息传递和任务调度。 sendMe…

基于Java技术的在线学习平台系统

开头语&#xff1a;你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;Java技术&#xff0c;基于SpringBoot框架 工具&#xff1a;Eclipse、Navicat、M…

n次方差公式推导

1. 推导 数列求和 S a 1 a 2 ⋯ a n , 公比为 q q S a 2 a 3 ⋯ a n 1 ( 1 − q ) S a 1 − a n 1 a 1 : 1 化简 ( 1 ) ( 3 ) S 1 q ⋯ q n − 1 ( 1 − q ) S 1 − q n ( 4 ) 代入 ( 5 ) ( 1 − q ) ( 1 q ⋯ q n − 1 ) 1 − q n q : b a 代入 ( 6 )…

Qt 学习(一) addressbook

Qt Demo: addressbook (1)创建项目&#xff1a;选择不创建界面&#xff0c;即UI&#xff0c;此时会自动生成的文件如图所示&#xff1a; QApplication&#xff1a; MainWindow 继承自 QMainWindow&#xff0c;根据需要设计的界面样式。 (2)确定MainWindow 的成员变量 首先&…

Jetpack架构组件_Navigaiton组件_1.Navigaiton切换Fragment

1.Navigation主要作用 方便管理Fragment &#xff08;1&#xff09;方便我们管理Fragment页面的切换 &#xff08;2&#xff09;可视化的页面导航图&#xff0c;便于理清页面间的关系。 &#xff08;3&#xff09;通过destination和action完成页面间的导航 &#xff08;4&a…

算尽天下财,铸就大明梦 —— 大明钱算子夏元吉的传奇一生

仕途生涯开始&#xff1a;洪武二十三年&#xff08;1390年&#xff09;&#xff0c;夏元吉因精通《诗经》&#xff0c;由湖广乡荐参加礼部组织的会试&#xff0c;虽未中举&#xff0c;但他并未气馁&#xff0c;反而更加努力地学习。洪武二十四年&#xff08;1391年&#xff09;…

通讯:单片机串口和电脑通讯

目录 1.串口输出数据到电脑 硬件部分 串口输出数据到电脑的软件软件部分&#xff1a; 相关问题&#xff1a; 2.单片机串口--485--485转USB--电脑 串口&#xff0c;芯片&#xff0c;转换器&#xff0c;设备之间的通讯的接线&#xff0c;都是要TX--RX, RX--TX 交叉连接。 单…

充电桩现场安装施工流程

摘要&#xff1a;在化石能源日益紧缩的今天&#xff0c;新能源车辆逐渐走进了千家万户&#xff0c;与传统化石能源车辆相比&#xff0c;以电驱动的新能源车辆能源利用率高&#xff0c;缩短了能源传递过程&#xff0c;实现了能源有效利用。根据能量守恒定律可知&#xff0c;任何…

V-Series Avalon-MM DMA Interface for PCIE IP核

目录 1. IP概述 2. Avalon-MM DMA Ports 3. 参数设置 3.1 系统设置 3.2 基址寄存器 (BAR) 设置 3.3 设备识别寄存器 3.4 PCI Express和PCI功能参数 3.4.1 Device Capabilities 3.4.2 Error Reporting 3.4.3 Link Capabilities 3.4.4 MSI and MSI-X Capabilities …

机器发货到菲律宾的完整流程 广东智慧物流

机器发货到菲律宾的完整流程 广东智慧物流 &#x1f31f;【机器发货到菲律宾完全攻略】&#x1f31f; 机器发货到菲律宾的完整流程 广东智慧物流 为你整理了一份超详细的机器发货到菲律宾的攻略&#xff01;海运14天轻松到达&#xff0c;让你无后顾之忧&#xff01;&#x1f…

知识平台管理系统设计

知识平台管理系统设计是一个综合性的过程&#xff0c;旨在为企业或组织提供一个高效、便捷的知识管理解决方案。以下是知识平台管理系统设计的详细阐述&#xff1a; 一、设计目标和原则 1、设计目标&#xff1a;设计一款功能强大、易于使用、支持多种知识形式分类和搜索的知识管…

uniapp地图点击获取位置

主页面 <view class"right-content" click.stop"kilometer(item)"><view class"km">{{item.distance||0}}km</view><image src"../../static/map.png" mode""style"width: 32rpx; height: 32rpx…

Getting started with Kivy

Getting started with Kivy – Kivy Blog This post collates various resources for getting started with the Kivy graphical framework for Python. 这份发表通过 kivy图像框架 来校对不同的资源来开始 Installation 安装 Follow the official installation documentat…

Java零基础-集合:LinkedHashMap

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

销毁DisposableBean/@PreDestroy

在Spring框架中&#xff0c;DisposableBean接口和PreDestroy注解都用于处理Bean的销毁逻辑&#xff0c;即在Bean生命周期结束时执行的清理工作。以下是它们各自的使用方式和特点&#xff1a; DisposableBean接口 DisposableBean是一个由Java EE规范定义的接口&#xff0c;Spri…

AI大模型学习路线

阶段1 Python编程基础 主要内容 掌握的核心能力 Python基础语法 Python数据处理 函数 文件读写 异常处理 模块和包1、掌握Python开发环境基本配置&#xff1b; 2、掌握运算符、表达式、流程控制语句、数组等的使用&#xff1b; 3、掌握字符串的基本操作&#xff1b; 4、…