package set.test;

import java.util.TreeSet;

/**

* 实现TreeSet存储和取出的顺序一致

* */

public class TreeSetTest {

public static void main(String[] args) {

//首先我们知道TreeSet底层是二叉树算法

TreeSet treeSet = new TreeSet<>();

treeSet.add(new Person("小A", 17));

treeSet.add(new Person("小B", 19));

treeSet.add(new Person("小C", 21));

treeSet.add(new Person("小C", 21));

//增强for循环

for (Person person : treeSet) {

System.out.println(person.getName()+"..."+person.getAge());

}

}

}

class Person implements Comparable{

private String name;

private int age;

public Person(String name, int age) {

this.name = name;

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

@Override

public int compareTo(Person o) {

//return compareToAge(o);

System.out.println("进入compareTo方法");

return compareToAge(o);

}

//按年龄从大到小排序

private int compareToAge(Person o) {

//判断是不是本身

if(o==this) {

return 0;

}

int result = o.getAge()-this.getAge();

if(result>0) {

return 1;

}else if(result<0) {

return -1;

}

return 0;

}

//存储和取出顺序一致

private int compareToNormal() {

return 1;

}

}

treeset 是有序吗_TreeSet如何实现有序?相关推荐

  1. 将k个有序链表合并成一个有序链表

    将k个有序链表合并成一个有序链表 这里以从小到大排序为例, 时间复杂度为O(nlgk). 特点:利用最小堆来完成k路归并 思路:取每个列表中的第一个元素,并将其放在最小堆中.与每个元素一起,必须跟踪从 ...

  2. 7-2 合并两个有序数组为新的有序数组 (15 分)

    ** 7-2 合并两个有序数组为新的有序数组 (15 分) ** 合并两个升序排序的整型数组为一个新的升序整型数组并输出. 输入格式: 首先输入第一个数组的数据个数后输入第一个数组按升序排序的数据,然 ...

  3. 两个有序链表合并成一个有序的单链表

    将这两个有序链表合并成一个有序的单链表 要求结果链表仍使用原来两个链表的存储空间,不另外占用其它的存储空间 表中允许有重复数据 算法描述 (1)定义一个合并后的指针pc指向La表的头结点.由于要求不占 ...

  4. 两个或多个有序数组合并为一个有序数组

    要求: 不使用for循环 不使用API方法进行数据迁移 : System.arraycopy(int[] a,-); Arrays.copyOf(int[] a,-); 一.两个有序数组合并为一个有序 ...

  5. 合并两个有序表到新的有序表

    系列目录: 左右移动(旋转)数组元素 查找两个升序数组的中间数 判断数组的某一个元素的数量是否超过了整个数组数量的一半 文图介绍 将有序数组A和有序数组B合并得有序数组C A 1 2 3 4 5 B ...

  6. 合并两个有序链表,合并后依然有序

    合并两个有序链表合并之后还是有序的,首先这两个链表是需要是有序的,也就是说这两个链表已经排好序了,才能进行合并.但是昨天也写过冒泡排序的程序了,如果让你合并两个不是有序的链表合并之后有序,那可以先将两 ...

  7. java 有序集合_java有哪些有序集合?

    Comparable接口 Comparator接口 SortedSet接口 SortedMap接口 在集合框架中有许多类具有排序功能,如:TreeSet类TreeMap类 为了用"集合框架& ...

  8. 两种思路将Python中两个有序数组合并为一个有序数组

    第一种思路: 把两个数组合为一个数组然后再排序,问题又回归到冒泡和快排了,没有用到两个数组的有序性. 第二种思路: 循环比较两个有序数组头位元素的大小,并把头元素放到新数组中,从老数组中删掉,直到其中 ...

  9. 有序链表插入 java_Java 实现有序链表

    有序链表: 按关键值排序. 删除链头时,就删除最小(/最大)的值,插入时,搜索插入的位置. 插入时须要比較O(N),平均O(N/2),删除最小(/最大)的在链头的数据时效率为O(1), 假设一个应用须 ...

最新文章

  1. 【转】mysqldump的锁表的问题
  2. Putty基础教程之(一).入门命令学习及编写HTML
  3. sun java ide,1.6 JAVA IDE安装
  4. MYSQL安装和配置
  5. linux的netperf测试,性能测试工具netperf安装使用
  6. 【CCCC】L3-011 直捣黄龙 (30分),Dijkstra维护点权,节点数,路径条数等+路径打印
  7. Linux下mail/mailx命令发送邮件
  8. Python __init__.py 作用详解
  9. 一台空调的容量是多少_大型中央空调工程节能改造方案如何选择
  10. visio是什么软件
  11. STA series --- 3.Standard cell library(PART-III)
  12. 【算法/数论】欧拉筛法详解:过程详述、正确性证明、复杂度证明
  13. JS 如何实现获取本地文件夹名称
  14. Java2048游戏源代码
  15. docker安装gamit_Ubuntu 14.04下Gamit10.5安装
  16. 关于解决Visual Studio 实时调试器弹出的对话框问题 三种解决办法
  17. I2C器件的从设备地址的设置(以AT24C02为例)
  18. DeepKE发布新版本:支持低资源、长篇章、多任务的图谱抽取开源框架,开源开放
  19. 【bzoj4568】【SCOI2016】【幸运数字】【树上倍增+线性基】
  20. Linux的文件权限理解及文件种类与扩展名

热门文章

  1. 来!把 5000 微信好友头像拼成一张图!
  2. 前端主流的 Javascript,缺失了哪些技能?
  3. DNS 教父怒喷 DNS-over-HTTPS!
  4. 面对 Google、Facebook、微软等科技巨头的围剿,夹缝中的初创企业该何去何从?...
  5. 今日头条、快手们疯狂招人是人工智能的失败?
  6. 做游戏怎能没有马云马化腾?
  7. “同一天生日”网络募捐被疑造假,为什么却成了程序员的锅?
  8. 帮你深度探寻Spring循环依赖源码实现!面经解析
  9. html如何取单元格内容,JS获取表格内指定单元格html内容的方法
  10. solaris perl print不输出_IC设计中的perl编程