首页
学习
活动
专区
工具
TVP
发布

java中的排序--排序容器_TreeSet与TreeMap

1.TreeSet:数据元素可以排序且不可重复。 对比: (1)Set接口:HashSet,元素必须重写hashcode和equals方法。 (2)TreeSet:只要可以排序即可。...TreeSet数据排序两种方式: 注意:TreeSet是在添加数据时进行排序,数据更改不会影响原来的顺序,因此不能修改类中数据,否则可能重复。...1)、若选用无参的new TreeSet()构造器,需要元素本身可以排序方能使用,也即实体类实现java.lang.Comparable接口重写compareTo接口。  ...super E> comparator)构造器--提供额外的业务排序类(匿名内部类的方式) package top.wfaceboss.caseSort; import java.util.TreeSet...容器中 // 由于Person类没有实现java.lang.Comparable重写compareTo接口 ,因此需要提供额外的业务排序类,否则会出错 TreeSet<

1.7K30

数据库默认排序

目标:理解oracle,mysql,sqlserve 三个数据库中的排序效率问题!...大多数情况下不需要排序还非得按主键排序这不是浪费资源么? 这和oracle的表结构是有关系的,因为oracle的表结构默认是按堆存放的。按堆存放的意思就是,随便存,存的时候就是乱序的。...如果你建表的时候就是建的按索引组织的表,那么它返回的时候就会默认排序了。...任何时候要排序就要加上order by 参考博客:https://blog.csdn.net/indieinside/article/details/45912911 Mysql: Mysql 有默认排序的...如果要增加查询效率可以 在后面加上 ORDER BY NULL sqlserver: 在不指定Order by的情况下,sqlserver会根据执行计划实际查询方式来得到数据 ,默认排序

1.7K10
您找到你想要的搜索结果了吗?
是的
没有找到

TreeSet集合解析

TreeSet是实现Set接口的实现类。所以它存储的值是唯一的,同时也可以对存储的值进行排序排序用的是二叉树原理。所以要理解这个类,必须先简单理解一下什么是二叉树。...二叉树原理简析  假如有这么一个集合TreeSet是[5,11,6,5,23,14]   用二叉树是怎么排序的呢? ?   二叉树遍历方法比较多,有兴趣自己百度看下吧。...TreeSet有这么一个构造方法:   TreeSet(Comparator comparator) 构造一个新的,空的树集,根据指定的比较器进行排序。   ...()方法返回的结果进行存储 (2)比较器顺序(Comparator) 创建TreeSet的时候可以指定一个Comparator 如果传入了Comparator的子类对象,那么TreeSet就会按照比较器中的顺序排序...调用的对象是compare方法的第一个参数,集合中的对象是compare方法的第二个参数 (3)两种方式的区别 TreeSet构造函数什么都不传,默认按照类中Comparable的顺序(没有就报错

73320

TreeSet 核心源码解析

,并根据其元素的自然顺序对其进行排序.插入set中的所有元素必须实现Comparable接口.此外,所有这些元素必须相互可比较:e1.compareTo(e2) 不得为集合中的任何元素e1和e2引发ClassCastException...,并根据其元素的自然顺序对其进行排序。...sorted set相同的元素,并使用相同的顺序 [5088755_1583915517346_AA5A390B7C1AE81B0402ABE6DDA95121] 构造一个新的空树集,根据指定的比较器排序...所有不会产生重复的 key ,利用这一特性,使用 TreeSet 正好可以去重. 5 ceiling TreeSet中实现NavigableSet接口 [5088755_1583917527579_8BAB0869A6DD644D037E218F9EC51E46...基于TreeMap实现的,支持自然排序和自定义排序 不允许null值; 非线程安全,并发场景下可以使用Collections.synchronizedSortedSet(new TreeSet(...)

38300

mysql:深究 sql 默认排序 order by

mysql 语句中如果没有使用 order by 来排序,通常会用 主键正序排列,但是有的时候不是这样,来看一个实例。...实例 ---- 群友问:请教一个问题,mysql 默认排序问题,当sql 语句 的排序没有指定 主键(id)的时候是按着什么规则排序的呢? ?...大概意思就是数据储存的表 不是有序的,而是一个集合,在没有使用 order by 来排序的时候,不能默认就是 根据主键排序。...大概意思:没有默认排序顺序。即使表具有聚集索引,也不能保证按该顺序获得结果。如果需要特定的顺序,则必须使用ORDER BY子句。 ?...结论 ---- 到这大家应该明白了,mysql 的没有默认排序,如果需要排序一定要加上 order by 来排序,大家有没有遇到过这样的问题,欢迎一起来讨论,如果有不对的地方,请指正,感谢。

4.1K20

TreeSet源码解析

在这一篇中我们主要分享一下TreeSet集合的相关知识。在上一篇中我们介绍了HashSet集合的底层实现,并且发现HashSet底层是通过HashMap集合实现的。...那么顾名思义今天我们介绍的TreeSet集合,底层就是通过TreeMap集合实现的。那么废话不多说,我们直接看TreeSet的初始化代码。 初始化 ?...初始化和HashSet一样,就是默认调用了底层实现集合的无参构造方法。...既然TreeSet底层是通过TreeMap实现的,那么我们很容易可以总结出TreeSet具有以下的特性: 总结 保存在TreeSet集合中的元素,必须保证能够排序 TreeSet集合中不能保存null...元素,否则,虚拟机会抛出异常 TreeSet集合是有序的集合类,但是,不能保证元素的添加顺序与遍历顺序一致 TreeSet集合不是线程安全的集合类,在多线程环境使用时,要添加额外的同步代码,已保证线程安全

43820

java进阶|TreeSet源码分析

public TreeSet() { this(new TreeMap()); } 每次我们创建一个TreeSet集合时,本质上就是new出了一个TreeMap(...)键值对集合,但是写到这里我还没有分析TreeMap的源码,但是这不影响我的分析,因为我已经分析完TreeSet集合的源码,整个的过程中没有阻塞性,所以分析TreeSet集合继续了。...接下来分析一下TreeSet集合中的first()方法,也就是获取TreeSet集合中第一个元素的方法,这个方法见到的很少,所以这里就分析一下。...我既然分享了如何获取TreeSet集合的第一个元素的方法,自然会去分析一下如何获取TreeSet集合获取最后一个元素pollLast()方法,所以继续分析一下了。...到这里自己想要分析的TreeSet集合就结束了

43820

修改 WordPress 文章默认排序的方法

我们用 wordpress 发布文章时,会用到一个希望把指定某一篇或者几篇文章置顶首页的功能,而不是 wordpress 默认的按照发布时间降序排列,也就是说按照我的想法文章排序第一、第二、第三、第四等等...虽然有些主题提供了置顶功能,但依然不能满足完全自定义文章排序的需求,默认 wp 博客是不提供这项功能的,也可以使用插件来实现。...本着能不用插件就不用插件的原则,魏艾斯博客来说一下如何修改 wordpress 文章默认排序,摆脱按发布时间升降序排列的方法。 ? 首先要添加一处。...这样就添加了一个自定义栏目,初始值是 0,这个 post_order 就是用来排序的。 这种方法需要每篇文章都设置一下排序值,魏艾斯博客首页置顶文章排序就是这样设置出来的。...在 index.php 中替换如下代码,把默认发布时间排序改成了你的 meta_key,同时添加一项 meta_key。

2.8K50

TreeSet 核心源码解析

3 构造方法 3.1 无参 构造一个新的空TreeSet,并根据其元素的自然顺序对其进行排序.插入set中的所有元素必须实现Comparable接口.此外,所有这些元素必须相互可比较:e1.compareTo...3.2 有参 构造一个包含指定集合中元素的新TreeSet,并根据其元素的自然顺序对其进行排序。 插入集合中的所有元素必须实现Comparable接口。...构造一个新的TreeSet,其中包含与指定的sorted set相同的元素,并使用相同的顺序 ? 构造一个新的空树集,根据指定的比较器排序。...所有不会产生重复的 key ,利用这一特性,使用 TreeSet 正好可以去重. 5 ceiling TreeSet中实现NavigableSet接口 ?...基于TreeMap实现的,支持自然排序和自定义排序 不允许null值; 非线程安全,并发场景下可以使用Collections.synchronizedSortedSet(new TreeSet(...)

38841

HashSet、TreeSet的特点

TreeSet可以保证元素的唯一性,并且可以按照自然顺序或自定义比较器的方式对元素进行排序TreeSet的添加、删除、查找操作的时间复杂度都是O(log n)。...TreeSet的优点:可以自动排序;查找元素的时间复杂度为O(log n);添加、删除元素的时间复杂度为O(log n);内存占用比较少。...TreeSet的缺点:不能存储null值;迭代TreeSet的顺序是按照元素的顺序输出的;比HashSet的性能差一些,因为需要维护红黑树的平衡;自定义比较器时需要额外的开销。...HashSet是基于哈希表实现的,查找、添加、删除元素的时间复杂度都是O(1),内存占用比较少,但是不能保证元素的顺序;TreeSet是基于红黑树实现的,可以自动排序,并且查找、添加、删除元素的时间复杂度都是...根据具体的需求,我们可以选择使用HashSet或TreeSet

72220
领券