Day27 TreeSet

2024-03-26 14:04
文章标签 treeset day27

本文主要是介绍Day27 TreeSet,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Day27 TreeSet

一、概念

TreeSet是Java集合框架中的一种实现类,它基于红黑树(Red-Black Tree)实现,用于存储有序的元素集合 。

二、应用场景

TreeSet是一个有序集合,适用于需要元素有序排列的场景。通过合理使用TreeSet,可以实现高效的有序集合操作,如查找最小/最大元素、查找子集等。

三、特点

  • TreeSet是有序的集合,元素按照升序排列(自然顺序或自定义比较器)。
  • 不允许添加null元素。
  • 支持高效的插入、删除和查找操作。
  • 提供了一些有序集合操作的方法,如first()last()headSet()tailSet()等。

理解:TreeSet的特点 – 自然排序 – TreeSet会根据元素类型的不同自动选择排序规则。

四、基本用法

  1. 导入TreeSet类
   import java.util.TreeSet;
  1. 创建TreeSet对象
   TreeSet<Integer> treeSet = new TreeSet<>();
  1. 添加元素
   treeSet.add(5);treeSet.add(2);treeSet.add(8);
  1. 遍历TreeSet
   for (Integer num : treeSet) {System.out.println(num);}
  1. 获取第一个和最后一个元素
   int firstElement = treeSet.first();int lastElement = treeSet.last();
  1. 获取小于等于/大于某个值的子集
   TreeSet<Integer> subset = (TreeSet<Integer>) treeSet.headSet(5); // 获取小于5的子集
  1. 删除元素
 treeSet.remove(2);
  1. 获取TreeSet大小
   int size = treeSet.size();

代码使用

import java.util.TreeSet;
import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
public class Test01 {/*** 知识点:TreeSet的使用* * 注意:TreeSet的使用和HashSet一样*/public static void main(String[] args) {//创建TreeSet集合的对象TreeSet<String> set = new TreeSet<>();//添加元素set.add("小希");set.add("小空");set.add("小丽");set.add("小光");set.add("小亚");set.add("小阳");set.add("小张");set.add("xxx");set.add("yyy");set.add("zzz");//获取元素个数int size = set.size();System.out.println("获取元素个数:" + size);//10TreeSet<String> newSet1 = new TreeSet<>();Collections.addAll(newSet1, "aaa","bbb","ccc","ccc");//利用Collections工具类给集合做批量添加set.addAll(newSet1);//将newSet1中所有的元素添加到set集合的末尾//清空集合中所有的元素//set.clear();System.out.println("判断集合中是否包含指定元素:" + set.contains("雪儿"));//trueSystem.out.println("判断集合中是否包含子集合中所有的元素:" + set.containsAll(newSet1));//trueSystem.out.println("判断集合中是否没有元素:" + set.isEmpty());//falseset.remove("小光");//根据元素删除元素set.removeAll(newSet1);//删除set中包含newset1的元素(去除交集)TreeSet<String> newSet2 = new TreeSet<>();Collections.addAll(newSet2, "xxx","yyy","zzz","zzz");//利用Collections工具类给集合做批量添加set.retainAll(newSet2);//保留set中包含newset2的元素(保留交集)//将集合转成数组Object[] objs = set.toArray();System.out.println(Arrays.toString(objs));//将集合转成数组String[] ss = new String[set.size()];set.toArray(ss);System.out.println(Arrays.toString(ss));System.out.println("--------------------------------");//遍历数据 -- foreachfor (String element : set) {System.out.println(element);}System.out.println("--------------------------------");//遍历数据 -- IteratorIterator<String> it = set.iterator();while(it.hasNext()){//判断是否有可迭代的元素String element = it.next();//返回下一个元素System.out.println(element);}}
}

这篇关于Day27 TreeSet的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/848749

相关文章

Java重修笔记 第四十八天 TreeSet 类、TreeMap 类

TreeSet 类 1. TreeSet 底层是 TreeMap 2. 使用默认构造器创建的 TreeSet 对象,添加顺序和取出顺序不是有序的 3. 如果添加的是字符串或数字,它们默认会按照字母顺序或数值顺序进行排序 4. 可以在构造器中传入一个 Comparator 比较器来手动制定比较规则,之后传入的数据会根据改规则自动进行比较排序,如果根据比较器比较出的结果是相同的,即 com

Set判断重复,TreeSet排序

Set集合中,无序,不能重复,如何判断对象重复? 在对象的bean中实现hashCode 和 equals方法,选定属性,根据选定的属性判断两个对象是否相等。 TreeSet类 TreeSet是SortedSet接口的唯一实现类,TreeSet可以确保集合元素处于排序状态。TreeSet支持两种排序方式,自然排序 和定制排序,其中自然排序为默认的排序方式。向TreeSet中加入的应该是

Java集合框架(Set与Map,HashSet与HashMap,TreeSet与TreeMap)

这是一个介绍集合类,数组以及容器关系的截图,便于我们对集合的理解。 一.Set和Map Set代表一种集合元素无序、不可重复的集合,Map则代表一种由多个key-value(键-值)对组成的集合。 从表面上看,它们之间的相似性很少,但实际上Map和Set之间有莫大的联系。可以说,Map集合是Set集合的扩展。 如果只考察Map集合的Key,不难发现,这些Map集合的key具有一个特

【JAVA入门】Day27 - 集合体系结构综述

【JAVA入门】Day27 - 集合体系结构综述 文章目录 【JAVA入门】Day27 - 集合体系结构综述一、单列集合体系结构1.1 Collection 集合的基本方法1.2 Collection 集合的遍历方式1.2.1 迭代器遍历1.2.2 增强 for 遍历1.2.3 利用 Lambda 表达式进行遍历 1.3 List 集合的基本方法1.4 List 集合的遍历方式

12. TreeSet的内部实现原理是什么?它是如何实现排序的?

TreeSet 是 Java 集合框架中的一个实现类,它实现了 NavigableSet 接口,并且是基于 TreeMap 实现的。TreeSet 的主要特性是元素自动排序,即元素会按照自然顺序或自定义的比较器顺序进行排序。在底层,TreeSet 是通过红黑树(Red-Black Tree)来实现的,这是一种自平衡的二叉搜索树。 TreeSet 的内部实现原理 1. 基于 TreeMa

43-hashset treeset的区别

‌HashSet和TreeSet的主要区别在于它们的底层数据结构、数据排序方式、性能、以及一些特定的操作支持。‌   ‌底层数据结构‌: ‌HashSet‌是基于哈希表实现的,利用哈希值进行快速查找,平均时间复杂度为O(1),即常数时间复杂度,这使得HashSet在搜索、插入和删除操作上非常快。HashSet不保证元素的顺序,也不保证元素的迭代顺序‌1。‌TreeSet‌则是基于红黑树实现的,红

Java面试题:解释HashSet和TreeSet的内部实现差异,以及它们的性能特点

HashSet和TreeSet是Java中实现Set接口的两种常见集合类,它们在内部实现和性能特点上有显著差异。以下是详细的对比分析: 内部实现 HashSet 数据结构:HashSet基于哈希表(Hash Table)实现。存储方式:使用哈希函数将元素映射到哈希表中的某个位置,哈希表内部是一个数组,每个数组位置可能包含一个链表(在Java 8之后,如果链表长度超过一定阈值,会转换为红黑树)

算法day27

第一题 515. 在每个树行中找最大值         首先是遍历每层的节点,将每一层最大值的节点的值保留下来,最后将所有层的最大值的表返回;具体的遍历每层节点的过程如上一篇故事; 综上所述,代码如下: /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode l

Java集合框架篇-62-TreeSet比较器排序原理和代码实现

前面我们知道了,TreeSet集合在存储元素的时候,会先调用compareTo方法,然后决定如何存储。下面,先看看一个需求的实现过程,然后介绍什么是比较器和如何具体实现。 1.字符串按照长度排序        我们已经知道,默认是按照unicode码表的字典排序输出,例如下面TreeSet集合存储的是String对象,就按照字典a到z的顺序排序。 package treeset;

Java集合框架篇-61-TreeSet存储自定义对象遍历练习

这篇,我们接着前面的代码,来做两个练习,熟悉下TreeSet遍历自定义类对象的基本操作。上面一篇,我们介绍了根据age来排序输出集合元素,这篇第一个练习,我们来看看如何根据name来排序,了解下字符排序的原理是什么。 1.TreeSet存储自定义对象并按照姓名排序 自定义类Person.java内容如下 package bean;public class Person impl