TreeSet 有两种排序方式
1. Java.lang.Comparble+compareTo
new TreeSet()
用这种方法必须要求实体类实现Comparable接口,也就是说要求添加到TreeSet中的元素是可排序的
2. java.util.Comparator +compare
举个TreeSet栗子:
package com.etc.test;
import java.util.Comparator;
import java.util.TreeSet;
import com.etc.entity.Person;
public class TreeSetDemo {
public static void main(String[] args) {
Person p1=new Person("depp",100);
Person p2=new Person("tom",90);
Person p3=new Person("jack",50);
TreeSet<Person> ts=new TreeSet<Person>(
new Comparator<Person>() {
public int compare(Person o1,Person o2){
return o1.getHandsome()-o2.getHandsome();//升序
}
}
);
ts.add(p1);
ts.add(p2);
ts.add(p3);
System.out.println(ts);
/*
* 排序结果没有改变,是因为TreeSet在添加元素的时候进行排序,需要注意,数据更改不会影响原来的顺序
还有一点需要注意的是,TreeSet中不可以数据重复,所以一般不修改数据,为了确保这一点,我们可以在Person类为属性加上final关键字,删除setter方法
*/
p3.setHandsome(200);//改变数据,排序不会改变
System.out.println(ts);
}
} 举个TreeMap栗子:
package com.etc.test; import java.util.Comparator;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet; import com.etc.entity.Person; public class TreeMapDemo {
public static void main(String[] args) {
Person p1=new Person("depp",100);
Person p2=new Person("tom",90);
Person p3=new Person("jack",50);
TreeMap<Person, String> tm=new TreeMap<Person, String>(new Comparator<Person>() {
public int compare(Person o1,Person o2)
{
return o1.getHandsome()-o2.getHandsome();//升序
}
});
tm.put(p1, "ttt");
tm.put(p2, "ttt");
tm.put(p3, "ttt");
System.out.println(tm);
//也可以用set进行输出 TreeMap也是在添加元素时进行排序
Set<Person> set=tm.keySet();
System.out.println(set);
}
}

  

TreeSet 和TreeMap 排序的更多相关文章

  1. TreeSet与TreeMap排序

    1.TreeSet原理: /* * TreeSet存储对象的时候, 可以排序, 但是需要指定排序的算法 *  * Integer能排序(有默认顺序), String能排序(有默认顺序), 自定义的类存 ...

  2. JDK学习---深入理解Comparator、TreeSet、TreeMap为什么可以排序

    我本来打算仔细的去分析分析TreeSet和TreeMap排序规则,并且从底层实现和数据结构入手.当我去读完底层源码以后,我感觉我就的目标定的太大了,单单就是数据结构就够我自己写很久了,因此我决定先易后 ...

  3. Java容器-引用数据类型排序+TreeSet、TreeMap底层实现

    目录 1.冒泡排序的实现 2.比较接口(普通数据类型.引用数据类型) 普通数据类型:冒泡排序 引用数据类型:包装类(Integer.String.Character.Date) 自定义类型:实体类:i ...

  4. TreeSet与TreeMap浅解

    TreeSet与TreeMap的关系: 1.TreeSet 实际上就是用TreeMap来组织数据的,因为在TreeSet中保存了一个NavigableMap<e,Object>接口实例变量 ...

  5. TreeSet和TreeMap的输出

    如果加入TreeSet和TreeMap的元素没有实现comprable中的compareTo()方法,那么会报错"treeset cannot be cast to java.lang.Co ...

  6. HashSet非常的消耗空间,TreeSet因为有排序功能,因此资源消耗非常的高,我们应该尽量少使用

    注:HashMap底层也是用数组,HashSet底层实际上也是HashMap,HashSet类中有HashMap属性(我们如何在API中查属性).HashSet实际上为(key.null)类型的Has ...

  7. B树和TreeSet与TreeMap

    1. 此前二叉搜索树相关的内容我们均假设可以把整个数据结构存储在计算机的内存中,但是如果数据量过大时,必须把数据结构放在磁盘上,导致大O模型不在适用.目前计算机处理器每秒至少可以执行5亿条指令,磁盘访 ...

  8. TreeSet和TreeMap不能存放重复元素?能不能存放null?其实不是这样的——灵活的二叉树

    TreeSet和TreeMap不能存放重复元素?能不能存放null?其实不是这样的——灵活的二叉树   本文链接:https://blog.csdn.net/u010698072/article/de ...

  9. TreeSet和TreeMap中“相等”元素可能并不相等

    TreeSet和TreeMap元素之间比较大小是借助Comparator对象的compare方法. 但有些时候,即便compare()返回0也不意味着这两个元素直观上相同. 比如元素是二元组[a,b] ...

随机推荐

  1. 安装Eclipsemaven插件

    Maven的Eclipse插件m2eclipse的安装 The goal of the m2ec project is to provide a first-class Apache Maven su ...

  2. bash: /home/aprilpeng/.bashrc: Permission denied

    bash: /home/aprilpeng/.bashrc: Permission denied 出现这样的权限问题,一般是在切换用户的时候,用户没有该目录的权限 可以$chown -R git:us ...

  3. jetty源代码剖析

    近期使用jetty自己写了一个web server,如今闲了花了一天的时间看了一jetty的源代码,主要以server的启动为主线.进行了剖析,经过阅读对jetty的源代码大赞,写的简洁.清晰.架构也 ...

  4. 磁盘分区对齐详解与配置 – Linux篇

    在之前一篇<磁盘分区对齐详解与配置 – Windows篇>中,我介绍了磁盘分区对齐的作用和适用于MBR和GPT的两种磁盘类型的配置,以及Windows平台设置磁盘分区对齐的方法. 本文作为 ...

  5. myBatis中使用Map进行遍历

    myBatis中使用Map获取key, value的方式 第一次的配置 <trim prefix=" tags =case" suffix="end"&g ...

  6. 高性能javascript学习总结(3)--数据访问

    在 JavaScript 中,数据存储位置可以对代码整体性能产生重要影响.有四种数据访问类型:直接量,变量,数组项,对象成员.         直接量仅仅代表自己,而不存储于特定位置. JavaScr ...

  7. 【Flask】视图高级

    # 视图高级笔记:### `add_url_rule(rule,endpoint=None,view_func=None)`这个方法用来添加url与视图函数的映射.如果没有填写`endpoint`,那 ...

  8. Spark Structured Streaming框架(5)之进程管理

    Structured Streaming提供一些API来管理Streaming对象.用户可以通过这些API来手动管理已经启动的Streaming,保证在系统中的Streaming有序执行. 1. St ...

  9. Fermat’s Chirstmas Theorem (素数打表的)

                                                                             Fermat’s Chirstmas Theorem ...

  10. 吴恩达机器学习笔记(四) —— BP神经网络

    主要内容: 一.模型简介 二.一些变量所代表的含义 三.代价函数 四.Forward Propagation 五.Back Propagation 六.算法流程 待解决问题: 视频中通过指出:当特征变 ...