- 浏览: 233289 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
tonyyan:
谢谢分享!
Kafka 监控 -
dtyu100:
反手就是一个赞,这相当于是官网druid.io的中文版本,很厉 ...
Druid 大数据分析之快速应用(单机模式) -
sqy:
2018-04-12T01:30:27,527 ERROR [ ...
Druid 大数据分析之快速应用(单机模式) -
wangyudong:
学习了,不错的Spring boot实例,参考着很快写出了RE ...
Spring boot 入门实例 -
string2020:
servlet4规范出来了,求翻译
Java Servlet3.1规范
如果要比较两个对象则Comparable接口很实用,虽然还有另一个接口Comparator,但我们现在只介绍接口Comparable用法。比较两个对象先要实现接口Comparable,并且实现compareTo方法,建议compareTo与equals比较规则一样。compareTo方法定义,查看API文档(文档已详细说明),实例结合java.util.Arrays.sort()方法。下面提供实例说明:
package cn.lang; /** * <li>当且仅当 e1.compareTo(e2) == 0 与 e1.equals(e2) 具有相同的 boolean 值时,类 C 的自然排序才叫做与 equals 一致 * null 不是任何类的实例,即使 e.equals(null) 返回 false,e.compareTo(null) 也将抛出 NullPointerException。</li> * <li>建议(虽然不是必需的)最好使自然排序与 equals 一致。这是因为在使用自然排序与 equals 不一致的元素(或键)时, * 没有显式比较器的有序集合(和有序映射表)行为表现“怪异”。尤其是,这样的有序集合(或有序映射表) * 违背了根据 equals 方法定义的集合(或映射表)的常规协定。</li> * <li>实际上,所有实现 Comparable 的 Java 核心类都具有与 equals 一致的自然排序。 * java.math.BigDecimal 是个例外,它的自然排序将值相等但精确度不同的 BigDecimal 对象(比如 4.0 和 4.00)视为相等。</li> * @author Administrator * @since 2011-12-26 * */ class Person implements Comparable<Person>{ private String name; private int age ; private String school ; public Person(String name,int age,String school){ this.name = name ; this.age = age ; this.school = school ; } @Override public int compareTo(Person t){ try{ if(t==null) throw new Exception("对象不能为空!"); }catch(Exception e){ System.out.println(this.getClass().getName()+"异常信息:"+e.getMessage()); } if(this.age>t.age){ return -1 ; }else if(this.age<t.age){ return 1; }else{ return 0 ; } } @Override public boolean equals(Object o){ if(this == o) return true; if(!(o instanceof Person)) return false; Person p = (Person)o ; if(this.age==p.age){ return true; }else{ return false; } } @Override public String toString(){ return "姓名:"+this.name+"、年龄:"+this.age+"、学校:"+this.school ; } } public class ComparableDemo01{ /** * 测试 * @param args */ public static void main(String[] args) { Person p1 = new Person("张三",10,"学校一"); Person p2 = new Person("李四",15,"学校二"); Person p3 = new Person("王五",8,"学校三"); Person p4 = new Person("小李",6,"学校四"); Person p5 = new Person("小二",16,"学校五"); Person p[] = {p1,p2,p3,p4,p5}; System.out.println("排序前:"); for(Person person:p){ System.out.println(person); } java.util.Arrays.sort(p); System.out.println("排序后:"); for(Person person:p){ System.out.println(person); } } }
package com.yy.basic; import java.util.Set; import java.util.TreeSet; public class Student implements Comparable<Student>{ private int id ; private String name ; private String school ; public Student(int id, String name, String school){ this.id = id ; this.name = name ; this.school = school ; } @Override public int compareTo(Student o) { int result = 0; result = id > o.id ? 1 : (id == o.id ? 0 : -1); if(result==0){ result = name.compareTo(o.name); } return result ; } @Override public boolean equals(Object obj) { if(this == obj){ return true ; } if(obj instanceof Student){ Student student = (Student) obj; if(this.id == student.id && this.name.equals(student.name) ){ return true ; } } return false; } @Override public int hashCode() { return id + this.name.hashCode(); } @Override public String toString() { return this.id + "_" + this.name + "_" + this.school; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSchool() { return school; } public void setSchool(String school) { this.school = school; } public static void main(String[] args) { Set<Student> set = new TreeSet<Student>(); set.add(new Student(1,"oy","zh")); set.add(new Student(2,"oy","zh")); set.add(new Student(1,"o1","zh")); set.add(new Student(4,"oy","zh")); set.add(new Student(3,"oy","zh")); System.out.println(set); } }
发表评论
-
数据接入ElasticSearch方式培训PPT
2018-01-28 11:53 1902写道 数据接入ElasticSearch几种方式总结,涉及 ... -
Apache ftp tools 图片下载支持中文
2017-12-05 23:55 1250写道 Apache Commom net:1) 递归pat ... -
FtpURLConnection 图片下载编码问题
2017-12-05 23:13 859写道 问题:1)Web项目中下载图片,存在下载不全,丢失部 ... -
Kafka 监控
2017-11-18 00:31 5777背景概述 写道 kafka0.9及以前版本ka ... -
Spring Cloud之OAuth2
2017-07-08 12:04 11409备:附件中OAuth2 授权服务器实现源码及PPT 一 ... -
Spring Cloud之Configuration Server
2017-05-19 22:51 1503为什么用spring cloud config 写道 一 ... -
Java Servlet3.1规范
2016-11-25 20:33 1250目录 前言........................ ... -
JMX监控(MBean)
2016-11-23 22:16 4105一、引言 写道 随着企业 IT 规模的不断增长,IT 资 ... -
哈希表在JAVA中如何实现
2016-11-23 20:42 2920一、 复习一下基础知识 1. 截断低位与抹除高位 ... -
Spring boot 入门实例
2016-10-29 00:33 4881写道 Spring Boot是由Pivotal团队提供的全 ... -
Java计算两点经纬度距离及最短运行时间
2016-09-12 21:20 2596概述 经纬度在地图应用中常见,一般结合路网信息库, ... -
计算机软件开源技术、大数据技术等资源教程
2016-08-24 13:01 588基于时间序列化数据引擎排名,很多OLAP工具,根据自身业务 ... -
代码单元与代码点
2016-08-16 17:46 692代码单元与代码点 代码点指编码表(比如Unicode)中某 ... -
Java模块化解决方案
2016-08-15 00:19 4196网络上很多OSGi的文章上来就Activator实例, ... -
深入浅出ClassLoader
2016-08-13 17:06 751你真的了解ClassLoader吗? 这篇文章翻译自zer ... -
Generate axis server code from wsdl
2016-08-04 00:34 12531、为什么需要生成服 ... -
Spring DAO设计实战
2016-01-23 12:21 3266引用 提供不同数据源和方言实现智能分页,因Spring单例 ... -
JAVA NIO 之三
2016-01-17 00:35 1732引用 本节采用JDK1.5之后java.util.con ... -
JAVA NIO 之二
2016-01-14 00:35 1975引用 继上节利用JAVA NIO实现简单数据传,本节实现自定 ... -
JAVA NIO 之一
2016-01-12 14:14 1568传统IO 写道 网络传输 ...
相关推荐
在Java编程语言中,`interface Comparable` 是一个非常重要的接口,它定义了比较对象的通用方法,使得对象之间可以进行排序。这个接口是Java Collections Framework(集合框架)的基础部分,对于实现排序和比较操作...
6. **Comparable接口与排序(Comparable Interface and Sorting)**: - `GeometricObject`类实现了`Comparable<GeometricObject>`接口,意味着它可以比较自身与其他`GeometricObject`对象,这里比较的是周长。 - ...
* The binary search tree class is an example of generic programming because you can use it with any classes that implement the Comparable interface. * Does it achieve genericity through inheritance or...
public interface Comparable<T> { int compareTo(T o); } ``` 其中`T`表示实现此接口的类本身。`compareTo`方法用于比较当前对象与另一个对象,返回值为: - 负整数:表示当前对象小于另一个对象。 - 零:表示两个...
`ArrayApp` 是一个专注于数据结构的程序,它演示了如何在Java编程语言中使用和操作数组,同时也展示了如何实现可比较接口(Comparable interface)及其相关的方法。数据结构是计算机科学中的核心概念,它涉及到如何...
type Comparable interface { Less(other Comparable) bool Equal(other Comparable) bool } type MyComparable struct { value int } func (m MyComparable) Less(other Comparable) bool { return m.value ...
// No need to implement Comparable interface private String name; private Integer order; // getters and setters... } public class Test { public static void main(String[] args) { User user1 = ...
type Comparable interface { Compare(other comparable) int } func (f MyFloat) Compare(other MyFloat) int { // 实现Compare方法 } ``` 这样,`MyFloat`类型就实现了`Comparable`接口,可以与其他实现...
public interface Comparable<T> { int compareTo(T o); } ``` 可以看到,Comparable 接口只有一个方法 compareTo,它的参数类型是泛型 T,表示要比较的对象。compareTo 方法返回一个整数值,表示当前对象与参数...
public interface Comparable<T> { int compareTo(T o); } ``` 当你创建一个类并希望其对象能够在集合如`ArrayList`或`TreeSet`中自动排序时,只需让该类实现`Comparable`接口。例如,如果你有一个`Person`类,你...
在Java编程语言中,接口(Interface)是一种非常重要的特性,它扮演着定义行为规范的关键角色。接口是完全抽象的类型,允许我们定义一组方法签名,但不提供具体实现。这使得接口成为实现多继承的手段,因为Java不...
public interface Comparable<T> { public int compareTo(T o); } ``` compareTo 函数用来比较两个对象的大小,返回负数意味着第一个对象小于第二个对象,返回零意味着两个对象相等,返回正数意味着第一个对象大于...
public interface Comparable<T> { int compareTo(T o); } ``` **compareTo()方法** `compareTo`方法返回一个整数值,表示当前对象与传入的对象`o`之间的相对大小。如果当前对象大于`o`,则返回正数;如果两者...
在Java编程语言中,接口(Interface)是一种非常重要的概念,它体现了面向对象设计的原则,提供了多继承机制。本文将深入探讨Java接口实例及其在实际应用中的作用。 首先,我们需要理解接口的基本定义。Java接口是...
public interface Comparable<T> { int compareTo(T o); } ``` compareTo()方法的返回值定义了两个对象的相对顺序: - 如果返回值小于0,表示当前对象小于指定对象。 - 返回值等于0,表示两者相等。 - 返回值大于0...
标题 "Delayed interface and Delay Queue" 涉及到Java并发编程中的两个重要概念:Delayed接口和DelayQueue。这篇博文可能是作者Tomboxfan在iteye博客上分享关于这两个概念的深入理解和应用实例。 Delayed接口是...
public interface Comparable<T> { int compareTo(T o); } ``` 这里 `T` 表示实现此接口的类的类型。 ##### 2.2 `compareTo()` 方法的实现 `compareTo()` 方法的返回值是一个整数值,表示调用对象与参数对象之间...
public void processComparable(GenericInterface<? extends Comparable<?>> gi) { // 使用具有边界通配符的方法调用 } ``` 7. **类型推断** 自Java 7开始,编译器支持类型推断,这使得在很多情况下,我们不...
例如,一个类可以同时实现`Comparable`和`Serializable`接口,使其既能比较又能序列化。 在这个"64_interface_atividade_explicada"活动中,你可能需要完成以下任务: - 理解接口的基本概念和作用。 - 创建并实现...