当前位置: 首页 > article >正文

TreeMap及TreeSet的总结(通俗易懂,轻松拿捏)

了解Treeset和TreeMap

TreeSet与TreeMap它们的底层是红黑树,而红黑树是一棵近似平衡的二叉搜索树,而HashSet和HashMap的底层是数组+链表实现的

具体继承关系如下图

Treeset和TreeMap的特点

因为TreeSet底层是用TreeMap实现的,所以两者的很多特点都相同,如下表:

底层数据结构

红黑树

是否有序

关于key有序

元素是否重复

不重复

线程安全

不安全

比较方式

实现Comparable接口或者提供比较器

TreeSet常用方法及测试

方法

说明

boolean add(E e)

如果元素不存在,添加元素到set集合中,返回true,

否则返回false

boolean remove(Object o)

如果元素存在,删除此元素,返回true,否则返回false

boolean contains(Object o )

如果set集合包含这个元素,返回true,否则返回false

boolean isEmpty()

如果set集合中没有元素,返回true,否则返回false

void clear()

删除set集合中的所有元素

Iterator iterator()

返回set集合的迭代器

int size()

返回set集合的元素个数

package lcoj;import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;public class Test {public static void main(String[] args) {Set<String> treeSet = new TreeSet<>();//添加元素 "张三" "李四" "王五"treeSet.add("张三");treeSet.add("李四");treeSet.add("王五");//删除元素 "张三"treeSet.remove("张三");//是否包含元素 "王五"boolean isContain = treeSet.contains("王五");System.out.println("是否包含元素王五: " + isContain);//集合是否为nullboolean empty = treeSet.isEmpty();System.out.println("集合是否为空: " + empty);//得到元素个数int size = treeSet.size();System.out.println("元素个数: " + size);//迭代器遍历System.out.print("集合里面的元素:");Iterator<String> iterator = treeSet.iterator();while (iterator.hasNext()) {System.out.print(iterator.next() + " ");}//删除所有元素treeSet.clear();}
}

运行结果

是否包含元素王五: true
集合是否为空: false
元素个数: 2
集合里面的元素:李四 王五

使用TreeSet去重:

在这个例子中,数据为:{1, 2, 2, 2, 95, 11, 55}

创建一个TreeSet集合,把每个元素添加进去,就完成了去重操作。

set集合里面的数据为:{1, 2, 95, 11, 55}

package lcoj;import java.util.Set;
import java.util.TreeSet;public class Test {public static void main(String[] args) {int[] arr = {1, 2, 2, 2, 95, 11, 55};Set<Integer> treeSet = new TreeSet<>();//去重前, 打印System.out.println("去重前:");for (int val : arr) {System.out.print(val + " ");}System.out.println();//去重for (int val : arr) {treeSet.add(val);}//去重后, 打印System.out.println("去重后:");for (int val : treeSet) {System.out.print(val + " ");}System.out.println();}
}

运行结果

去重前:
1 2 2 2 95 11 55 
去重后:
1 2 11 55 95 

TreeMap常用方法及测试

方法

说明

V put(K key, V value)

将key和value作为键值对,添加到Map中

V get(Object key)

返回key对应的value

V getOrDefault(Object key, V defaultValue)

如果Map中有关于key对应的value

则返回Map中的value, 否则返回默认的value

boolean containsKey(Object key)

如果Map中有key则返回true

Set<Map.Entry<K,V>> entrySet()

返回一个set集合,里面的元素是Map.Entry<K, V>

Map.Entry<K, V>接口里获取key和value的方法

方法

说明

K getKey()

获取key

V getValue()

获取value

package lcoj;import java.util.Map;
import java.util.Set;
import java.util.TreeMap;public class MapTest {public static void main(String[] args) {Map<String, Integer> map = new TreeMap<>();//使用put方法,把键值对放进map中//这里第一个参数是人名,第二个参数是年龄map.put("张三", 18);map.put("李四", 22);map.put("王五", 21);//获取"王五"对应的年龄Integer age = map.get("王五");System.out.println(age);//查看map里是否有"李四"boolean ret = map.containsKey("李四");System.out.println(ret);//得到Entry的set集合,遍历set集合//获取Entry对象,然后获取key和valueSet<Map.Entry<String, Integer>> entries = map.entrySet();for (Map.Entry<String, Integer> entry : entries) {System.out.print("key = " + entry.getKey() + "\t");System.out.print("value = " + entry.getValue());System.out.println();}}
}

运行结果

21
true
key = 张三    value = 18
key = 李四    value = 22
key = 王五    value = 21

http://www.lryc.cn/news/2420360.html

相关文章:

  • C++---iota函数的用法
  • Java常见异常(Runtime Exception )小结
  • 【算法竞赛】如何用c++的stringstream处理输入输出
  • 【服务器搭建】幻兽帕鲁Palworld私服搭建保姆级教学
  • 详解linux下mnt目录作用
  • linux 内核 :Netlink 原理分析
  • [Java] currentTimeMillis方法与Date类
  • 总结指针数组与数组指针的区别
  • Redis持久化的两种方式(RDB持久化和AOF持久化)
  • 网络体系结构基本概念及OSI七层模型
  • 机器学习之回归中的相关度和决定系数
  • mul matlab,汇编语言MUL指令:无符号数乘法
  • VM虚拟机(操作)
  • Logcat命令详解 和 adb 常用命令
  • Android 服务(Service)详解
  • 【2024最新版】超详细NMAP安装保姆级教程,Nmap的介绍、功能并进行网络扫描,收藏这一篇就够了
  • setAttribute的作用
  • Oracle 分区表快速使用
  • adb工具包的安装和使用(Windows)
  • 什么是硬件加速,什么时候应该打开它?这里提供详细解释
  • 计算机网络---数据链路层HDLC协议
  • JAVA SCRIPT全述
  • SyntaxError: invalid syntax报错(python)
  • OSGI初识
  • 秩和检验
  • Linux——文件管理(文件系统、目录管理、文件操作)
  • C程序设计语言——指针
  • 【iReport+JasperReport】1.iReport与JasperReport基础
  • sql中的int、bigint、smallint和tinyint四种数据类型
  • 【大数据】Hadoop—— 三大核心组件理论入门 | 完全分布式集群搭建 | 入门项目实战