package test;

//Comparable 使对象本身具有可比性,这种方式称为元素的自然顺序或默认顺序

//Comparator 元素自身不具备比较性或者比较性不是所需要的,在集合初始化让其具有比较性 (更实用)

import java.util.*;

//class

public class TreeSetDemo {

public static void main(String[] args) {

TreeSet st=new TreeSet(new MyComparator());

st.add(new Student("bca",23));

st.add(new Student("bca",23));

st.add(new Student("abc",29));

st.add(new Student("dcba",24));

for(Iterator it=st.iterator();it.hasNext();)

{

Student p=it.next();

System.out.println(p.getName()+"==="+p.getAge());

}

}

}

class Student implements Comparable //实现了接口必须实现compare();

{

private String name;

private int age;

Student(String name,int age)

{

this.name=name;

this.age=age;

}

String getName()

{

return name;

}

int getAge()

{

return age;

}

@Override

public int compareTo(Student st)//实现compare方法

{

if(this.age>st.age)

return 1;

if(this.age==st.age)

return 0;

return -1;

}

}

//Object类实现了equail();所以实现接口以下时只需对compare()重写即可

class MyComparator implements Comparator//实现了接口必须实现compare();

{

@Override

public int compare(Student s1,Student s2)

{

int num=s1.getName().compareTo(s2.getName());

if(num==0)

{

return new Integer(s1.getAge()).compareTo(new Integer(s2.getAge()));//Integer 类实现了Comparable接口

//if(s1.getAge()>s2.getAge())

//return 1;

//if(s1.getAge()==s2.getAge())

//return 0;

//return -1;

}

return num;

}

}

java后台实现自定义排序,java 两种方式实现自定义排序相关推荐

  1. Java中线程的创建有两种方式

    Java中继承thread类与实现Runnable接口的区别 Java中线程的创建有两种方式: 1.  通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中 2.  通过 ...

  2. EntityFramework Core 2.0自定义标量函数两种方式

    前言 上一节我们讲完原始查询如何防止SQL注入问题同时并提供了几种方式.本节我们继续来讲讲EF Core 2.0中的新特性自定义标量函数. 自定义标量函数两种方式 在EF Core 2.0中我们可以将 ...

  3. iOS 自定义layer的两种方式

    在iOS中,你能看得见摸得着的东西基本都是UIView,比如一个按钮,一个标签,一个文本输入框,这些都是UIView: 其实UIView之所以能显示在屏幕上,完全是因为它内部的一个图层 在创建UIVi ...

  4. java 深克隆_Java实现深克隆的两种方式

    序列化和依次克隆各个可变的引用类型都可以实现深克隆,但是序列化的效率并不理想 下面是两种实现深克隆的实例,并且测试类对两种方法进行了对比: 1.重写clone方法使用父类中的clone()方法实现深克 ...

  5. java的websocket_java 实现websocket的两种方式实例详解

    一.介绍 1.两种方式,一种使用tomcat的websocket实现,一种使用spring的websocket 2.tomcat的方式需要tomcat 7.x,JEE7的支持. 3.spring与we ...

  6. Java Spark之创建RDD的两种方式和操作RDD

    首先看看思维导图,我的spark是1.6.1版本,jdk是1.7版本 spark是什么?  Spark是基于内存计算的大数据并行计算框架.Spark基于内存计算,提高了在大数据环境下数据处理的实时性, ...

  7. websocket java 例子_java 实现websocket的两种方式实例详解

    目录 一.介绍 1.两种方式,一种使用tomcat的websocket实现,一种使用spring的websocket 2.tomcat的方式需要tomcat 7.x,JEE7的支持. 3.spring ...

  8. Java中类加载器获取的两种方式

    import org.junit.Test;import java.io.FileInputStream; import java.io.IOException; import java.io.Inp ...

  9. JAVA与PLC通讯读取数据(两种方式)

    第一种方式(s7connector) S7官网:S7Connector - Documentation,有简单的读写操作参考. 1.创建maven工程引入依赖 <dependency>&l ...

  10. Java代码实现MD5加密的两种方式

    MD5的全称是Message-Digest Algorithm 5 (信息-摘要算法),在90年代初,由MIT Laboratory for Computer Scientce 和RSA Data S ...

最新文章

  1. 英国工程巨头遭勒索攻击:运营临时中断 至少损失4亿元
  2. 定义zabbix_action报警通知模板
  3. 使用BootStrap编写网页,如何设置全屏页面背景?
  4. StringIO类的用途
  5. MVVM更容易内存泄露吗?
  6. 大数学家陶哲轩谈时间管理与高效工作的方法
  7. 802d简明调试手册_SINUMERIK-828D简明调试手册.pdf
  8. Python中对列表list进行定义、增删改查、遍历及与元组的对比
  9. 适用于5G网络的SAF Spectrum Compact 频谱仪
  10. matlab仿真函数,matlab自动控制仿真常见函数应用
  11. 跪了,腾讯数据工程师用Python可视化绘制的中国GDP数据地图,大佬就是不一样
  12. Python收集新闻其他辅助功能的实现
  13. /etc.login.defs 权限权限解析
  14. Unity笔记-29-ARPG游戏项目-03-攀爬系统
  15. PS 剪切图片到指定大小
  16. 【微信小程序】微信小程序基础知识篇
  17. php批量处理图片大小,wps如何批量处理图片大小
  18. 已成功与服务器建立连接,但是在登录过程中发生错误。
  19. App Store拒绝原因
  20. Python三方微博登录

热门文章

  1. javaweb----三层架构+
  2. leetcode 643. Maximum Average Subarray I | 643. 子数组最大平均数 I(Java)
  3. 【Python基础避坑】函数内存底层分析,全局变量/局部变量,参数传递,浅拷贝/深拷贝
  4. 【PAT甲级 BigInteger】1019 General Palindromic Number (20 分) Java版 7/7通过
  5. 文章转载-见贤思齐焉,见不贤而内自省也
  6. 04.elasticsearch-dynamic_mapping_and_index_template
  7. 牛客 -- leetcode -- evaluate-reverse-polish-notation
  8. 【手把手教学】基于Maven构建方式使用Mybatis generator自动生成
  9. 【leetcode-83】剑指 Offer 18-2 删除排序链表中的重复元素
  10. 【已解决】Unable to resolve column ‘name‘