package 对象比较排序;

 import java.util.Arrays;

 class A implements Comparable<A>{
private String name;
private int age;
public A(String name,int age){
this.name=name;
this.age=age;
}
@Override
public int compareTo(A o) {//此方法无需手工调用,Arrays会自动调用
if(this.age<o.age)
return -1;//1.this小于返回负数,this大于返回正数,则升序;
if(this.age>o.age)
return 1;//2.this小于返回正数,this大于返回负数,则降序;
return 0;//相等返回0
}
@Override
public String toString() {
return "name="+name+",age="+age+"\n";
}
}
public class TestComparable {
public static void main(String[] args) {
A[] as=new A[]{
new A("张三",63),
new A("李四",33),
new A("王五",53),
new A("赵六",43),
};
Arrays.sort(as);
System.out.println(Arrays.toString(as));
}
}

运行结果:

[name=李四,age=33
, name=赵六,age=43
, name=王五,age=53
, name=张三,age=63
]


 package 对象比较排序;

 import java.util.Arrays;
import java.util.Comparator; class B{
private String name;
private int age;
public B(String name,int age){
this.name=name;
this.age=age;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return "name="+name+",age="+age+"\n";
}
}
class BComparator implements Comparator<B>{
@Override
public int compare(B o1, B o2) {
if(o1.getAge()<o2.getAge())
return -1;
if(o1.getAge()>o2.getAge())
return 1;
return 0;
}
}
public class TestComparator {
public static void main(String[] args) {
B[] bs=new B[]{new B("张三",44),
new B("李四",33),
new B("王二",55),
new B("赵六",66)};
BComparator bc=new BComparator();
Arrays.sort(bs, bc);
System.out.println(Arrays.toString(bs));
}
}

运行结果:

[name=李四,age=33
, name=张三,age=44
, name=王二,age=55
, name=赵六,age=66
]


如果需要对一组对象进行排序建议优先使用Comparable

【java】实现Interface java.lang.Comparable<T>接口的int compareTo(T o)方法实现对象数组或链表或集合的排序,和挽救式对象比较器Interface java.util.Comparator<T>的更多相关文章

  1. java.lang.Comparable<T> 接口

    package java.lang; import java.util.*; public interface Comparable<T> { public int compareTo(T ...

  2. java基础面试题:如何把一段逗号分割的字符串转换成一个数组? String s = "a" +"b" + "c" + "d";生成几个对象?

    package com.swift; public class Douhao_String_Test { public static void main(String[] args) { /* * 如 ...

  3. java学习-Comparable<Integer>接口方法的实现

    基本数据类型的包装类Integer, Float, Double,Long,Byte等都实现的Comparable接口,用于列表List或数组arrays的排序 Comparable<Integ ...

  4. Java探索之旅(11)——抽象类与接口

    1.Java数据类型       ❶不可变类,是指当创建了这个类的实例后,就不允许修改它的属性值. 它包括:         Primitive变量:boolean,byte, char, doubl ...

  5. 如何理解 Java 中的 <T extends Comparable<? super T>>

    Java 中类似 <T extends Comparable<? super T>> 这样的类型参数 (Type Parameter) 在 JDK 中或工具类方法中经常能看到. ...

  6. Java基础知识强化之集合框架笔记45:Set集合之TreeSet存储自定义对象并遍历练习1(自然排序:Comparable)

    1. 自然排序: TreeSet会调用集合元素的compareTo(Object obj)方法来比较元素之间的大小关系,然后将集合元素按照升序排列,这种方式就是自然排序. Java中提供了一个Comp ...

  7. java中compareTo和compare方法之比较

    这两个方法经常搞混淆,现对其进行总结以加深记忆. compareTo(Object o)方法是java.lang.Comparable接口中的方法,当需要对某个类的对象进行排序时,该类需要实现Comp ...

  8. java中compareTo和compare方法之比较,集合中对象的比较

    前言 转自:http://www.cnblogs.com/yueliming/archive/2013/05/22/3092576.html (这里做了一些小改动) 一直一来对集合中对象的比较方案,有 ...

  9. 利用Comparable接口实现对对象数组的排序

    Arrays 类中的sort方法承诺可以对对象数组进行排序,但是需要对象所属的类实现Comparable接口 任何实现Comparable接口的对象都需要实现该方法 并且在Java SE 5.0之前该 ...

随机推荐

  1. 用CRT查找内存泄漏

    引用原文地址 : https://msdn.microsoft.com/en-us/library/x98tx3cf.aspx 1. 在program中严格按下面顺序include #define _ ...

  2. Eclipse中代码整体左移,右移快捷键

    1.向右:将要移动的代码选中,然后按TAB键2.向左:将要移动的代码选中,然后按SHIFT+TAB键

  3. 预加载(图片,css ,js)

    图片预加载 new Image().src = 'http://img1.t.sinajs.cn/t35/skin/skin_008/skin.css'; //新浪(4) 非ie下预加载(js,css ...

  4. csv格式订单下载,完成后伴随邮件通知下载

    前言 功能开发中会遇到大量订单下载,而服务器的请求响应时间又配置的很短,导致下载时候请求超时. 这篇文章主要思路:异步查询数据,生成csv文件,放入email中并发送给用户.(异步部分本文不做介绍,配 ...

  5. 作为新手 HTML5如何自学为好?

    互联网发展到今天,越来越多的技术岗位人才出现了稀缺的状态,就拿当前的HTML5来讲,基本成为了每家互联网公司不可缺少的人才.如果抓住这个机会,把HTML5搞好,那么前途不可限量,而且这门行业是越老越吃 ...

  6. JAVA基础1——字节&位运算

    占用字节数 & 取值范围 Java一共有8种基本数据类型(原始数据类型): 类型 存储要求 范围(包含) 默认值 包装类 int 4字节(32位) -2^31~ 2^31-1 0 Intege ...

  7. [Machine Learning]学习笔记-线性回归

    模型 假定有i组输入输出数据.输入变量可以用\(x^i\)表示,输出变量可以用\(y^i\)表示,一对\(\{x^i,y^i\}\)名为训练样本(training example),它们的集合则名为训 ...

  8. Java之多态

    一.多态 1.含义 一种类型,呈现多种状态.主要关注类多态.方法多态. 2.多态的前提:继承 使用父类引用指向子类对象: Animal a1 = new Cat(): Object a1 = new ...

  9. 基于文本图形(ncurses)的文本搜索工具 ncgrep

    背景 作为一个VIM党,日常工作开发中,会经常利用grep进行关键词搜索,以快速定位到文件.如图: 利用grep进行文本搜索 但是,这一过程会有两个效率问题: 展示的结果无法进行直接交互,需要手动粘贴 ...

  10. apache mysql无法启动解决办法

    最近在调试几个代码,需要不停的启动关闭服务器和mysql.在连续的几次开关后,无法启动了,每次启动后就直接关闭. 刚开始是怀疑是不是端口被占用了,查看端口后,并没有端口被占用的情况.查看mysql错误 ...