treeset的实现原理
来源:互联网 发布:学编程需要会什么数学 编辑:程序博客网 时间:2024/04/29 05:36
1.特点
TreeSet是用来排序的,可以指定一个顺序,对象存入后会按照指定的顺序排列
2.使用方式
a.自然顺序
*TreeSet类的add()方法会把存入的对象提升为
Comparable类型
*调用对象的compareTo()方法和集合中的对象
比较,当前存入的是谁就会调用compareTo的
方法
*根据compateTo()方法返回的结果进行存储
b.比较器排序
*创建TreeSet的时候可以指定一个Comparator
*如果传入了Compare的子对象,那么TreeSet
会按照比较器中的顺序排序
*add()方法内部会自动调用Comparator接口中
的compare()方法排序
*调用的对象就是当前存入的对象是compare方
法中的第一个参数,集合的对象已经添加进去
的对象就是compare的第二个对象
c.2中方式的比较
* TreeSet构造函数什么不传,默认按照
Comparable的顺序,没有就报
classCastException
*TreeSet如果传入Comparator,就优先按照
Comparator
package com.itheima;import java.util.ArrayList;import java.util.Comparator;import java.util.List;import java.util.TreeSet;/** * TreeSet排序原理 * * @author gaojiangjian * */public class Text16 { public static void main(String[] args) { ArrayList<String> list = new ArrayList<String>(); list.add("aaa"); list.add("aaa"); list.add("ccc"); list.add("ddd"); list.add("fffffffffff"); list.add("heima"); list.add("itcast"); list.add("bbbb"); list.add("aaa"); list.add("aaa"); //2,定义方法对其排序保留重复 sort(list); //3,打印list System.out.println(list); } public static void sort(List<String> list) { TreeSet<String> treeSet = new TreeSet<String>(new Comparator<String>() { @Override public int compare(String o1, String o2) { // TODO Auto-generated method stub int num = o1.compareTo(o2); return num == 0 ? 1 : num; } }); treeSet.addAll(list); list.clear(); list.addAll(treeSet); }}
- treeset的实现原理
- 16.5 TreeSet的实现原理
- Java集合中TreeSet的实现原理
- TreeSet实现原理
- TreeSet实现原理
- TreeSet实现原理
- TreeSet的排序原理
- TreeSet保证元素唯一并实现排序的原理
- 深入Java集合源码学习系列:TreeSet的实现原理
- TreeSet保证元素唯一并实现排序的原理
- Java 集合 5:HashSet ,TreeSet 实现原理
- TreeSet实现原理及源码分析
- TreeSet实现原理及源码分析
- Java学习笔记之集合(六):TreeSet集合的实现原理
- Set的原理浅析 HashSet, TreeSet(NavigableMap)
- HashSet、LinkedHashSet、TreeSet的内部实现简介
- HashSet和 TreeSet实现的不同
- ArrayList,Queue,TreeSet,HashMap的底层实现
- BZOJ 2431 逆序对数列 DP
- UVA 601: The Path
- Java六大必须理解的问题
- 图解TCP/IP协议笔记
- 2101 Problem A Snake Filled
- treeset的实现原理
- HDU 1426 Sudoku Killer (DFS 数独)
- csdn待改进点之8------>写博文时, 取消之前勾选的分类, 但在显示框中却没有对应取消
- 字符集与编码问题
- JAVA正则表达式,matcher.find()和 matcher.matches()的区别
- java正则实例
- 安卓实现手机sim卡的绑定与监听
- centos安装软件的两种命令rpm,yum
- java中用字节流读取文本时中文乱码