Java中的TreeSet一一C++ STL库中upper_bound与lower_bound的一个可行替代方法

这篇博客探讨了Java中TreeSet与HashSet的区别,强调了TreeSet的有序特性和常用方法,特别是lower、floor、ceiling及higher方法,指出它们在某些场景下可作为C++ STL upper_bound与lower_bound的替代。通过举例LeetCode 220题,展示了如何利用TreeSet的ceiling方法解决高效查找问题,实现了O(n*log(min(n,k)))的时间复杂度。" 120358430,10290268,Java JDBC:数据库连接与Properties配置文件加载,"['Java', '数据库开发', 'JDBC连接池', '配置管理']
摘要由CSDN通过智能技术生成

关于Java中TreeSet的随想

在使用Java中的Set集合时,比较常用的两个类分别是HashSet与TreeSet。两者都继承了Set集合无重复元素的特点。首先简谈一下两者的区别:

HashSet与TreeSet的区别

1. HashSet不能保证数据有序,TreeSet中数据有序,且可以设置排序规则(使用Comparator接口,实现 int compare(T o1,T o2)方法);

2. HashSet底层基于Hash表存储,TreeSet基于二叉树结构存储(红黑树?);

3. HashSet允许放入null值,TreeSet不行;

4.HashSet基于Hash算法性能显著优于TreeSet,一般情况下只有涉及排序相关操作时才使用TreeSet;

TreeSet 常用方法

// TreeSet构造方法

TreeSet() //默认构造函数。使用该构造函数,TreeSet中的元素按照自然排序进行排列。

TreeSet(Collection<? extends E> collection) // 创建的TreeSet包含collection

TreeSet(Comparator<? super E> comparator) // 指定TreeSet的比较器(排序规则)

TreeSet(SortedSet<E> set) // 使用已有的set创建TreeSet

// 其他常见的函数
boolean                   add(E object)
boolean                   addAll(Collection<? extends E> collection)
void                      
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值