第一种是使得元素具有比较性

第二种是让集合具有比较性

具体代码步骤如下:

import java.util.*;

/*

* TreeSet:可以自动对对集合中的元素进行排序

* 第一种比较方式

* 步骤:

* 1.让元素对象的类具有比较性,并实现Comparable接口

* 2.对其中的compareto方法进行复写

* 3.在方法中定义返回1大于0等于-1小于

* 4.在主函数中加入元素并用迭代器取出可看到结果

*/

class student implements Comparable

{

private String name;

private int age;

student(String name,int age)//将变量定为私有,并提供方法,在构造函数中初始化,是对象的一种封装方式

{

this.name=name;

this.age=age;

}

public String getname()

{

return name;

}

public int getage()

{

return age;

}

public int compareTo(Object obj)//复写方法

{

if(!(obj instanceof student))//判断传进来的是否为学生对象

{

throw new RuntimeException("不是学生对象");

}

student s=(student)obj;//将obj向下转型,才能调用子类特有的方法

if(this.age>s.age)

{

return 1;

}

if(this.age==s.age)//如果年龄相同的话,我们就比较名字

{

return this.name.compareTo(s.name);

}

return -1;

}

}

public class Treeset1 {

public static void main(String[] args)

{

TreeSet ts=new TreeSet();

ts.add(new student("zhangsan",20));

ts.add(new student("lisi",18));

ts.add(new student("wangwu",18));

ts.add(new student("zhaosi",22));

Iterator it=ts.iterator();

while(it.hasNext())

{

student stu=(student)it.next();

System.out.println(stu.getname()+"....."+stu.getage());

}

}

}

import java.util.*;

/*

* TreeSet的第二种比较方式

* 步骤:

* 1.定义一个自定义比较器,实现Comparator接口

* 2.复写compare方法

* 3.将比较器作为参数传到TreeSet当中

* 4.加入元素就可比较了

*/

class student1

{

String name;

int age;

student1(String name,int age)

{

this.name=name;

this.age=age;

}

public String getname()

{

return name;

}

public int getage()

{

return age;

}

}

class mycompare implements Comparator

{

public int compare(Object o1,Object o2)

{

student1 s1=(student1)o1;

student1 s2=(student1)o2;

if(s1.age>s2.age)

{

return 1;

}

if(s1.age==s2.age)//如果年龄相同的话,我们就比较名字

{

return s1.name.compareTo(s2.name);

}

return -1;

}

}

public class Treeset2

{

public static void main(String[] args)

{

TreeSet ts=new TreeSet(new mycompare());

ts.add(new student1("zhangsan",20));

ts.add(new student1("lisi",18));

ts.add(new student1("wangwu",18));

ts.add(new student1("zhaosi",22));

Iterator it=ts.iterator();

while(it.hasNext())

{

student1 stu=(student1)it.next();

System.out.println(stu.getname()+"....."+stu.getage());

}

}

}

当元素具备比较性,而且还有比较器的时候,以比较器为主。

java treeset比较,java中TreeSet的两种排序比较的方式相关推荐

  1. 按照姓名升序排序的代码_好程序员Java培训分享Java集合的两种排序方法

    好程序员Java培训分享Java集合的两种排序方法,Java集合的工具类Collections中提供了两种排序的方法,分别是: 1.Collections.sort(List list) 2.Coll ...

  2. 宇宙中至少有两种方式能灭绝人类,第一种仅需两秒

    来源:科学的乐园 在科幻小说<三体Ⅲ:死神永生>之中,歌者文明"母世界"的宇宙飞船曾经利用宇宙规律武器二向箔来摧毁地球文明,将地球所处的三维世界完全变成了一个二维世界. ...

  3. 在计算机系统中有两种不同的图像编码方式,第二章计算机系统与计算原理.ppt...

    第二章计算机系统与计算原理 大学计算机基础 * 信息表示与处理 ----西文字符 ASCII 码是美国信息交换标准代码(American Standard Code for Information I ...

  4. java声明异常必须抛出吗_简述java中抛出异常的两种方式

    java编程中经常遇到异常,这时就需要利用java中的异常抛出机制,在java中提供了两种抛出异常的方法:try{}  catch() {}和throw. 一.抛出异常的两种方式 (1) 首先我们来看 ...

  5. java中使用集合模拟斗地主发牌的两种排序(根据大小或者花色)

    第一种排序 根据花色,把相同的花色排到一起,然后将其花色一样的再进行排序 第一种排序参照代码中all()方法 第二种排序 真实的模拟斗地主游戏的排序玩法,即按照大王(这里用的是JOKER)joker2 ...

  6. Java两种排序方式快慢比较

    2019独角兽企业重金招聘Python工程师标准>>> Java中List的排序方式有两种,现在我们测试下这两种排序方式的快慢吧,我们需要用到两个类, 一个是运行程序的Main类,另 ...

  7. java中常用的几种排序算法--常见笔试面试

    转载:http://blog.csdn.net/ygc87/article/details/7208082 以下列出Java中常用的几种排序算法,只是简单实现了排序的功能,还有待改进,望指教(以下均假 ...

  8. Java 解析Excel(xls、xlsx两种格式)

    Java 解析Excel(xls.xlsx两种格式) 一.环境 JDK 1.8 二.JAR 1.commons-collections4-4.1.jar 2.poi-3.9-20121203.jar ...

  9. Java构造和解析Json数据的两种方法详解一

    在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...

最新文章

  1. 微软一顿操作猛如虎,PowerShell排名直线上升
  2. c++同时读取文本_VBA专题08:使用VBA操作文本文件
  3. 不同浏览器 ajax,完整的 AJAX 写法(支持多浏览器)
  4. 透过认知智能剖析商业本质(iPIN CEO杨洋)丨硬创公开课
  5. linux文件 内存映射 锁,linux – mmap:将映射文件立即加载到内存中吗?
  6. Model、ModelMap和ModelAndView的使用详解
  7. python函数参数类型检查_Python中实现参数类型检查的简单方法
  8. (转载)Android studio 导入或依赖第三方库失败
  9. 原型以及原型链的学习随笔
  10. java可视化编程软件有哪些_几款Java开发者必备常用的工具,准点下班不在话下...
  11. Java经典递归算法
  12. 针对华为荣耀6移动高配版(H60-L11)的root工作
  13. 02【需求调研】的概念,包括那些内容,有哪些方法?
  14. pyecharts绘制K线
  15. 2022 Google 谷歌开发者大会亮点抢先看
  16. VMware新建虚拟机在按照过程图形化鼠标点击不了,
  17. 评论家必备 APP | Effie : 盘点三款最好用的写作软件
  18. 基于java jsp的社区志愿者服务系统
  19. 医学超声成像—合成孔径法(Synthetic Aperture Methods)[2]
  20. java根据内容生成二维码并保存到本地

热门文章

  1. 论文浅尝 | Generative QA: Learning to Answer the Whole Question
  2. Channel使用技巧
  3. 前后端分离使用 Token 登录解决方案
  4. 单行文本与多行文本省略文本
  5. 将JSON转成DataSet(DataTable)
  6. ASP.NET MVC V2 Preview 1 发布 期望VS有更好的表现
  7. 牛客15499 Jxc军训(快速幂,逆元)
  8. INTRODUCTION TO NONELINEAR OPTIMIZATION Excise 5.2 Freudenstein and Roth Test Function
  9. sql server如何输出排序序号_Group by中子查询order by排序失效问题分析
  10. wdcp mysql远程_CentOS下WDCP下的MYSQL开启远程连接