- 浏览: 93292 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
softcc:
Lz,你好。我想知道“for循环的条件根据当前页来计算当前页所 ...
基于Oracle数据库的数据分页原理 -
hezhou_0521:
这也太简单了吧,如果我想把多选的值传到下一个ACTIVITY中 ...
Android单选和多选择按钮:
sort对于不同的对象, 需要自己重写过.
class A implements Comparable{ public int compareTo( Object o ){ A a = (A)o; 具体的比较方法. > 返回值大于0 . <返回值小于0, 相等时候返回0} }
实际调用过程中:
List l = new LinkedList(); l.add( [object[1] of A] ); .... l.add( [object[2] of A] ); Collections.sort(l); System.out.println(l);
以下的详细部分可以参考. 采集自API文档..
public interface Comparable<T>
此接口强行对实现它的每个类的对象进行整体排序。此排序被称为该类的自然排序,类的 compareTo 方法被称为它的自然比较方法。
实现此接口的对象列表(和数组)可以通过 Collections.sort(和 Arrays.sort)进行自动排序。实现此接口的对象可以用作有序映射表中的键或有序集合中的元素,无需指定比较器。
对于类 C 的每一个 e1 和 e2 来说,当且仅当 (e1.compareTo((Object)e2) == 0) 与 e1.equals((Object)e2) 具有相同的布尔值时,类 C 的自然排序才叫做与 equals 一致。注意,null 不是任何类的实例,即使 e.equals(null) 返回 false,e.compareTo(null) 也会抛出 NullPointerException。
强烈推荐(虽然不是必需的)使自然排序与 equals 一致。这是因为在使用其自然排序与 equals 不一致的元素(或键)时,没有显式比较器的有序集合(和有序映射表)行为表现“怪异”。尤其是,这样的有序集合(或有序映射表)违背了根据 equals 方法定义的集合(或映射表)的常规协定。
例如,如果将两个键 a 和 b 添加到一个没有使用显式比较器的有序集合中,使得 (!a.equals((Object)b) && a.compareTo((Object)b) == 0),则第二个 add 操作返回 false(有序集合的大小没有增加),因为从有序集合的角度来看,a 和 b 是等效的。
实际上,所有执行比较的 Java 核心类都具有 equals 一致的自然排序。java.math.BigDecimal 是个例外,它的自然排序把值相等但精确度不同的 BigDecimal 对象(比如 4.0 和 4.00)等同起来。
为了向数学上倾斜,在给定 C 类的基础上定义自然排序的关系 如下:
{(x, y) such that x.compareTo((Object)y) <= 0}。
整体排序的 quotient 是:
{(x, y) such that x.compareTo((Object)y) == 0}。
它直接遵循 compareTo 的协定,商是 C 的等价关系,自然排序是 C的整体排序。当我们说类的自然排序与 equals 一致 时,是指自然排序的商是由类的 equals(Object) 方法定义的等价关系。
{(x, y) such that x.equals((Object)y)}。
compareTo
int compareTo(T o)
在前面的描述中,符号 sgn(expression) 表示数学上的 signum 函数,该函数根据 expression 的值是负数、零还是正数,分别返回 -1、0 或 1。 实现类必须确保对于所有的 x 和 y,都存在 sgn(x.compareTo(y)) == -sgn(y.compareTo(x))。(这意味着如果 y.compareTo(x) 抛出一个异常,则 x.compareTo(y) 也要抛出一个异常。)
实现类还必须确保关系是可传递的:(x.compareTo(y)>0 && y.compareTo(z)>0) 意味着 x.compareTo(z)>0。
最后,实现程序必须确保 x.compareTo(y)==0 意味着对于所有的 z,都存在 sgn(x.compareTo(z)) == sgn(y.compareTo(z))。
强烈推荐 (x.compareTo(y)==0) == (x.equals(y)) 这种做法,但不是 严格要求这样做。一般来说,任何实现 Comparable 接口和违背此条件的类都应该清楚地指出这一事实。推荐如此阐述:“注意:此类具有与 equals 不一致的自然排序。”
o
- 要比较的对象。 ClassCastException
- 如果指定对象的类型不允许它与此对象进行比较。////////////////////////////////////////////////////////////////////////
import java.util.*; public class test{ public static void main( String args[] ) { List l1 = new LinkedList(); l1.add( new Name("Karl", "M") ); l1.add( new Name("Steven", "Lee") ); l1.add( new Name("John", "o") ); l1.add( new Name("Tom", "M") ); System.out.println(l1); Collections.sort(l1); System.out.println(l1); } } class Name implements Comparable{ private String firstName, lastName; public Name(String firstName, String lastName) { this.firstName = firstName; this.lastName = lastName; } public String getFirstName(){ return firstName; } public String getLastName(){ return lastName; } public String toString() {return firstName+" "+lastName;} public boolean equals(Object obj) { if(obj instanceof Name) { Name name = (Name) obj; return ( firstName.equals( name.firstName ) && lastName.equals( name.lastName ) ); } return super.equals(obj); } public int hashCode() { return firstName.hashCode(); } public int compareTo( Object o ){ Name n = (Name)o; int lastCmp = lastName.compareTo(n.lastName); return ( lastCmp != 0 ? lastCmp : firstName.compareTo(n.firstName) ); } }
发表评论
-
struts2工作原理
2010-12-31 11:04 659一个请求在Struts2框架中的处理大概分为以下几个步骤: ... -
<logic:empty> <logic:present>之间的区别
2010-12-31 10:58 1088logic:empty标签判断脚本变量是否为null,是否是一 ... -
J2EE中几种业务代理模式的实现和比较
2010-12-30 22:15 815http://www.jdon.com/artichect/b ... -
jeecms加载首页的过程
2010-12-30 22:05 1218jeecms加载首页的过程 收藏 < ... -
jeecms学习
2010-12-30 19:39 838http://xiongzaiqiren.blog.163.c ... -
把jsp网站部署到tomcat的root目录上
2010-12-24 04:09 2648先进入tomcat首页,http://localhost:80 ... -
Comparable接口使用1
2010-12-23 18:34 1090一个实现了Comparable接口的类在一个Collectio ... -
Comparable接口的使用
2010-12-23 18:28 1086利用 Comparable 接口创建自己的类的排序顺序,只是实 ... -
Conllection框架中的Comparator使用笔记
2010-12-23 18:20 883- - 这几天一直在弄自己的RSS解析器。一切顺利,R ... -
pager-taglibs分页标签使用说明1
2010-12-22 14:35 880一简介, Pager-taglib,支持多种风格的分页显 ... -
JForum论坛
2010-11-12 14:26 1805jforum-2.1.8 详细配置 关键字: jforum 本 ... -
接口和抽象类的区别
2010-11-02 00:16 648abstract class和interface是Java语言 ... -
Eclipse快捷键大全(转载)
2010-10-10 15:56 603Ctrl+1 快速修复(最经典 ... -
java类反射 (转载)
2010-10-04 10:02 678Java提供了一套机制来动态执行方法和构造方法,以及数组操作等 ... -
JBoss Tools Eclipse 3.6发布的插件
2010-10-03 17:36 1815JBoss Tools针对新版的Eclipse 3.6发布了新 ... -
JAVA利用httpclient登录开心网
2010-09-19 12:55 1037httpclient简单应用,登录开心网的例子 需要用到的ja ... -
JBPM学习笔记一(环境搭建)
2010-06-27 23:55 10041.什么是JBPM JBPM是一个可扩展、灵活的流程引 ...
相关推荐
这些图标可以直接通过CSS类来使用,方便快捷。 在文档方面,Bootstrap Collections应该提供了详细的使用指南和API参考,帮助开发者了解每个组件的用法和参数设置,从而更好地利用这些资源。 总的来说,Bootstrap ...
java.util.concurrent总体概览图。 收取资源分3分。需要的同学可以下载一下。 java.util.concurrent主要包括5个部分executor,colletions,locks,atomic...该图详细的列举了并发包下面的结构,包含所有接口和具体实现类。
common-beanutils、commons-colletions、commons-httpclient、commons-lang、commons-logging、ezmorph、json-lib、xom
【书目合集】是一个包含了丰富管理类书籍的资源包,涵盖了各种可以帮助个人提升自我、增强领导力和财务智慧的读物。以下是对压缩包中各个文件内容的详细概述: 1. **Padre Rico, Padre Pobre**(富爸爸,穷爸爸):...
ta_lib-0.5.1-cp312-cp312-win32.whl
课程设计 在线实时的斗兽棋游戏,时间赶,粗暴的使用jQuery + websoket 实现实时H5对战游戏 + java.zip课程设计
ta_lib-0.5.1-cp310-cp310-win_amd64.whl
基于springboot+vue物流系统源码数据库文档.zip
GEE训练教程——Landsat5、8和Sentinel-2、DEM和各2哦想指数下载
知识图谱
333498005787635解决keil下载失败的文件.zip
【微信机器人原理与实现】 微信机器人是通过模拟微信客户端的行为,自动处理消息、发送消息的程序。在Python中实现微信机器人的主要库是WeChatBot,它提供了丰富的接口,允许开发者方便地进行微信消息的接收与发送。这个项目标题中的"基于python实现的微信机器人源码"指的是使用Python编程语言编写的微信机器人程序。 1. **Python基础**:Python是一种高级编程语言,以其简洁的语法和强大的功能深受开发者喜爱。在实现微信机器人时,你需要熟悉Python的基本语法、数据类型、函数、类以及异常处理等概念。 2. **微信API与WeChatBot库**:微信为开发者提供了微信公共平台和微信开放平台,可以获取到必要的API来实现机器人功能。WeChatBot库是Python中一个用于微信开发的第三方库,它封装了微信的API,简化了消息处理的流程。使用WeChatBot,开发者可以快速搭建起一个微信机器人。 3. **微信OAuth2.0授权**:为了能够接入微信,首先需要通过OAuth2.0协议获取用户的授权。用户授权后,机器人可以获取到微信用户的身份信息,从而进行
基于springboot实验室研究生信息管理系统源码数据库文档.zip
张力控制,色标跟踪,多轴同步,电子凸轮,横切等工艺控制案例。
在Python编程环境中,处理Microsoft Word文档是一项常见的任务。Python提供了几个库来实现这一目标,如`python-docx`,它可以让我们创建、修改和操作.docx文件。本教程将重点介绍如何利用Python进行Word文档的合并、格式转换以及转换为PDF。 1. **合并Word文档(merge4docx)** 合并多个Word文档是一项实用的功能,特别是在处理大量报告或文档集合时。在Python中,可以使用`python-docx`库实现。我们需要导入`docx`模块,然后读取每个文档并将其内容插入到主文档中。以下是一个基本示例: ```python from docx import Document def merge4docx(file_list, output_file): main_doc = Document() for file in file_list: doc = Document(file) for paragraph in doc.paragraphs: main_doc.add_paragraph(paragraph.text) m
基于springboot+Javaweb的二手图书交易系统源码数据库文档.zip
基于springboot餐品美食论坛源码数据库文档.zip
基于springboot亚运会志愿者管理系统源码数据库文档.zip
使用WPF的数据样式绑定,切换对象数据值来完成控件动态切换背景渐变动画效果。 使用动画样式渲染比线程修改性能消耗更低更稳定
基于SpringBoot的企业客源关系管理系统源码数据库文档.zip