JAVA-TreeSet使用方式

news2025/2/25 16:02:24

1. TreeSet

在一次写力扣题的时候,用到了TreeSet,这里记录一下TreeSet的常用方式。
TreeSet的特点:有序,不可重复,红黑树,基于Treemap实现,自定义排序等特点。

java中实现的Set有HashSet ,LinkedHashSet , TreeSet
此处下方介绍Treeset
HashSet点击此链接
LinkedHashSet点击此链接

2.构造函数

TreeSet提供了四种构造器,如下图所示
在这里插入图片描述

2.1 无参数构造

Treeset的初始化

TreeSet treeSet = new TreeSet();

2.2 comparator

添加一个Compatator,如下假如使用一个从大到小的排序。

public static void main(String[] args) {

        TreeSet<Integer> treeSet = new TreeSet<>(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o2 - o1;
            }
        });
        treeSet.add(1);
        treeSet.add(3);
        treeSet.add(2);
        System.out.println(treeSet);
    }

在这里插入图片描述
在这里插入图片描述

3. 常见操作元素

3.1 添加元素

如下所示,默认按照从小到大排序
在这里插入图片描述

在这里插入图片描述
重复添加相同的元素Treeset不变

在这里插入图片描述

在这里插入图片描述

3.2删除元素

删除成功返回true,删除失败返回false

boolean bool = treeSet.remove(object o);

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
删除不存在的元素,返回false,而不会报错
在这里插入图片描述
在这里插入图片描述

3.3 是否包含某个元素

boolean bool = treeSet.contains(object o);

在这里插入图片描述
在这里插入图片描述

3.4 clear方法

清空treeSet,使treeset为空
在这里插入图片描述
在这里插入图片描述

3.5 first(),last()

first()返回第一个object,last返回最后一个object。下方示例使用Integer。

public static void main(String[] args) {

        TreeSet<Integer> treeSet = new TreeSet<>();
        treeSet.add(1);
        treeSet.add(3);
        treeSet.add(2);
        Integer first = treeSet.first();
        Integer last = treeSet.last();
        System.out.println(first);
        System.out.println(last);

    }

另外,first(),last()是 TreeSet 独有的方法,Set是不具有此方法的。因此创建treeset时需使用
TreeSet treeSet = new TreeSet<>();
而不能使用
Set treeSet = new TreeSet<>();

在这里插入图片描述

4.性能对比

与HashSet相比,TreeSet的性能更低。操作,比如添加、删除和搜索需要O(log n)的时间,而像打印操作ñ在有序元素需要O(n)的时间。不采用Hash算法来决定元素的存储位置,而是采用了红黑树。支持2种排序方法:自然排序和定制排序。默认是自然排序。

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

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

相关文章

thinkphp 解决跨域的三个方式

1. 在tp入口index.php 加上header //支持跨域 header("Access-Control-Allow-Origin:*"); header(Access-Control-Allow-Methods:*); header(Access-Control-Allow-Headers:x-requested-with, content-type,token); 2. 在route.php加上 allowCrossDomain()&#xff…

自定义指令与Apollo:定制化数据查询与变更

前言 「作者主页」&#xff1a;雪碧有白泡泡 「个人网站」&#xff1a;雪碧的个人网站 「推荐专栏」&#xff1a; ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄&#xff0c;vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄&#xff…

【ArcGIS模型构建器】04:根据矢量范围批量裁剪影像栅格数据

本文以中国2000-2010-2020年3期GLC30土地覆盖数据为例,演示用模型构建器批量裁剪出四川省3年的数据。 文章目录 一、结果预览二、模型构建三、运行模型四、注意事项一、结果预览 用四川省行政区数据裁剪出的3年Globeland30(配套实验数据data04.rar中有三年中国区域成品数据)…

永磁无刷直流(无框)力矩电机brushless DC motor (BLDCM)

(无框)力矩电机&#xff0c;全称应该为永磁无刷直流(无框)力矩电机&#xff0c;其显著的特征是&#xff1a; 较大的径长比&#xff08;diameter-to-length ratio&#xff09;较多数目的磁极&#xff08;magnet poles&#xff09; 无框架电机是传统电机中用于产生扭矩和速度的…

常用Win32 API的简单介绍

目录 前言&#xff1a; 控制控制台程序窗口的指令&#xff1a; system函数&#xff1a; COORD函数&#xff1a; GetStdHandle函数&#xff1a; GetConsoleCursorInfo函数&#xff1a; CONSOLE_CURSOR_INFO函数&#xff1a; SetConsoleCursorInfo函数&#xff1a; SetC…

一条监视仪表的小需求,挖掘出定制大市场

作为安防圈内人士&#xff0c;你有没有想过&#xff0c;日常遇到的一条小小客户需求&#xff0c;也许有企业能通过深度定制&#xff0c;在短时间内快速达成且具有极高的性价比&#xff0c;并由此给你带来一个稳定收益的商机&#xff1f;山东的马先生作为一名资深的安防人&#…

【RocketMQ系列十二】RocketMQ集群核心概念之主从复制生产者负载均衡策略消费者负载均衡策略

您好&#xff0c;我是码农飞哥&#xff08;wei158556&#xff09;&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f4aa;&#x1f3fb; 1. Python基础专栏&#xff0c;基础知识一网打尽&#xff0c;9.9元买不了吃亏&#xff0c;买不了上当。 Python从入门到精…

秋季期中考复现xj

flow analysis 1 What is the backdoor file name that comes with the server?( Including file suffix) 服务器自带的后门文件是什么&#xff1f;&#xff08;含文件后缀&#xff09; 题目还要求最后把那个文件名MD5一下&#xff0c;再去提交 开始的前三题是流量分析的&…

操作系统学习——第一类R/W问题和第二类R/W问题

一、First Reader/Writer问题 访问时 结束时 这里因为在第一类读写问题里面Reader可以同时操作&#xff0c;所以在最后一个Reader结束的时刻一定没有其他Reader了 二、Second Reader/Writer问题 第二类问题遵循Writer优先原则&#xff0c;只要存在Writer操作就执行读操作

TTS | 轻量级VITS2的项目实现以及API设置

本文主要是实现了MB-iSTFT-VITS2语音合成模型的训练&#xff0c;相比于VITS模型&#xff0c;MB-iSTFT-VITS模型相对来说会小一点&#xff0c;最重要的是在合成结果来看&#xff0c;MB-iSTFT-VITS模型推理更快&#xff0c;更加自然&#xff08;个人经验&#xff09;.项目地址如下…

冒泡排序:了解原理与实现

目录 原理 实现 性能分析 结论 冒泡排序&#xff08;Bubble Sort&#xff09;是一种简单但效率较低的排序算法。它重复地比较相邻的元素并交换位置&#xff0c;直到整个序列有序为止。虽然冒泡排序的时间复杂度较高&#xff0c;但在小规模数据集上仍然具有一定的实际应用价…

Unity 通过jar包形式接入讯飞星火SDK

最近工作上遇到了要接入gpt相关内容的需求&#xff0c;简单实现了一个安卓端接入讯飞星火的UnitySDK。 或者也可以接入WebSocket接口的。本文只讲安卓实现 我使用的Unity版本为2021.3.27f1c2 Android版本为4.2.2 1.下载SDK 登陆讯飞开放平台下载如图所示SDK 2.新建安卓工程…

【Tensorflow 2.12 简单智能商城商品推荐系统搭建】

Tensorflow 2.12 简单智能商城商品推荐系统搭建 前言架构数据召回排序部署调用结尾 前言 基于 Tensorflow 2.12 搭建一个简单的智能商城商品推荐系统demo~ 主要包含6个部分&#xff0c;首先是简单介绍系统架构&#xff0c;接着是训练数据收集、处理&#xff0c;然后是召回模型、…

一个小的图文编辑软件 -- 采用winform开发

本人用winform开发了一款图文编辑软件&#xff0c;实现了图片、文字、图形混合排版; 可以对图元调整大小、设置角度、添加剪切区间等操作。本人以前也写过一款类似的软件《WinForm版图像编辑小程序》&#xff1b; 最近几年&#xff0c;本人一直从事图形处理方面的开发&#xff…

雷达开发的基本概念fft,cfar,以及Clutter, CFAR,AoA

CFAR Constant False-Alarm Rate的缩写。在雷达信号检测中&#xff0c;当外界干扰强度变化时&#xff0c;雷达能自动调整其灵敏度&#xff0c;使雷达的虚警概率保持不变。具有这种特性的接收机称为恒虚警接收机。雷达信号的检测总是在干扰背景下进行的&#xff0c;这些干扰包括…

SAP PO/PI 设置字段或静态参数到URL

文章目录 需求一、字段内容设置到URL中二、使用静态值三、测试总结 需求 通过PO/PI访问第三方接口并把字段或静态参数设置在URL中 一、字段内容设置到URL中 首先我们在MassageMapping中需要把字段内容发送到DynamicConfiguration中去&#xff0c;利用UDF UDF代码 这里面需要…

编译工具链 之一 基本概念、组成部分、编译过程、命名规则

编译工具链将程序源代码翻译成可以在计算机上运行的可执行程序。编译过程是由一系列的步骤组成的&#xff0c;每一个步骤都有一个对应的工具。这些工具紧密地工作在一起&#xff0c;前一个工具的输出是后一个工具的输入&#xff0c;像一根链条一样&#xff0c;我们称这一系列工…

【汇编】第一个汇编程序(学习笔记)

一、程序从编写到执行的过程 1、编写 Notepad / UltraEdit 汇编语言 2、编译、连接 MASM.EXE&#xff1a;编译产生目标文件 LINK.EXE&#xff1a;连接&#xff0c;产生可执行文件 连接作用&#xff1a;源程序分为多个子程序编译后&#xff0c;连接在一起。或程序调用其他…

【JavaEE】网络编程---UDP数据报套接字编程

一、UDP数据报套接字编程 1.1 DatagramSocket API DatagramSocket 是UDP Socket&#xff0c;用于发送和接收UDP数据报。 DatagramSocket 构造方法&#xff1a; DatagramSocket 方法&#xff1a; 1.2 DatagramPacket API DatagramPacket是UDP Socket发送和接收的数据报。…

SQL查询优化---单表使用索引及常见索引失效优化

如何避免索引失效 1、全值匹配 系统中经常出现的sql语句如下&#xff1a; EXPLAIN SELECT SQL_NO_CACHE * FROM emp WHERE emp.age30 EXPLAIN SELECT SQL_NO_CACHE * FROM emp WHERE emp.age30 and deptid4EXPLAIN SELECT SQL_NO_CACHE * FROM emp WHERE emp.age30 and dept…