`
dingjob
  • 浏览: 183250 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

《Effective Java》阅读体会之四--通用方法(建议覆盖toString,compare排序的比较)

阅读更多

1. Object的toString方法返回的格式是 类名+@+散列码的十六进制表示。toString约定我们必须覆盖这个方法。

例如在PhoneNumber的toString方法里可以 写成 区号-电话号码的形式,给客户一个约定的友好的展示。

 

String.format方法可以进行一些必要格式的显示,比较高效

如:

String.format("%1$,12d", 85022088)

 

具体实现可以参阅:http://www.iteye.com/topic/339734

 

2.考虑实现comparable接口

 

如果你要对一个ServiceEvent的事件进行排序,最好在这个实体里就实现comparable接口


形如:

 

@Override
	public int compareTo(Object o) {
		return this.eventTime.compareTo(((ServiceCtrlEvent)o).getEventTime());
	}

 

这样就可以很简单的和很多集合类一起使用,排序可以直接使用集合的排序,

 

Collections.sort(serviceCtrlEvents);

 

有一点值得一提:

由于compareTo方法只是指定了返回值的符号,并没有制定返回值,在通常我们些的compareTo方法上会有一定的改进空间:

如实现电话号码的比较时

public int compareTo(PhoneNumber pn){
    if(areacode<pn.areaCode){
       return -1; 
    }
    if
    if(areacode>pn.areaCode){
       return 1; 
    }
     if(lineNumber<pn.lineNumber){
       return -1; 
    }
     if(lineNumber>pn.lineNumber){
       return 1; 
    }
    return 0;
}

 

 

可以改进为:

   

public int compareTo(PhoneNumber pn){
    areaCodeDiff =areacode-  pn.areaCode;
    if(areaCodeDiff !=0){
       areaCodeDiff; 
    }
        ……
   return 0;
]

 

Java平台的所有值类Integer、BigDecimal 等都实现了这个comparable接口。

 

 

 

 

分享到:
评论

相关推荐

    java 字符串a-z排序

    2. **排序字符数组**:利用Java内置的排序方法,如`Arrays.sort()`,对字符数组进行排序。默认情况下,这个方法会按照Unicode值对字符进行排序,对于a-z的字母来说,这与字母顺序是一致的。 3. **构建新字符串**:...

    Java基础[03-面向对象].

    面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程 强调的是功能行为 面向对象 将功能封装进对象,强调具备了功能的对象。 面向对象是基于面向过程的。

    Effective Java第三版1

    《Effective Java》是Java编程领域的一本经典著作,由Joshua Bloch撰写,该书的第三版继续提供了关于如何编写高效、优雅、可维护的Java代码的指导。以下是基于给出的目录和部分内容提取的一些关键知识点: ### 第一...

    effective java 读书笔记

    《Effective Java》是Java开发领域的经典著作,作者Joshua Bloch深入浅出地阐述了编写高效、健壮的Java代码的技巧和最佳实践。以下是对该书部分内容的详细解释: 1. **产生和销毁对象** - Item1:静态工厂方法相比...

    JAVA题库习题及答案--.doc

    Java是一种强大的、面向对象的编程语言,以其跨平台、安全性和可移植性著称。Java程序主要分为两种类型:Application和Applet。Application是独立运行的程序,它们有自己的main()方法,可以单独启动,而Applet是嵌入...

    effectiveJava课件分享

    在编程领域,特别是Java开发中,"Effective Java"是一本非常经典的书籍,由Joshua Bloch撰写,书中提出了一系列最佳实践和设计原则,以帮助开发者编写出更高效、更安全的代码。根据提供的标题和描述,我们将探讨三个...

    java源码包---java 源码 大量 实例

    Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM...

    Java中数组实例---冒泡排序.pdf

    在Java中,可以使用`Arrays.toString()`方法将数组转换为字符串形式方便打印。 6. **结束条件**:当所有元素都在正确的位置上时,排序结束。在实际的冒泡排序代码中,通常会有一个标志位(如布尔值`swapped`)来...

    java 中文姓氏 排序

    Java 提供了多种方式进行排序,包括使用 `Collections.sort()` 方法配合自定义比较器(`Comparator`)。本文将详细介绍如何在 Java 中对包含中文姓氏的对象列表或字符串列表进行排序。 #### 二、基本概念 1. **...

    java中文排序,数字字母汉字排序

    Java集合框架中的`List`接口提供了一个`sort(Comparator&lt;? super E&gt; comparator)`方法,可以接受一个比较器(Comparator)来定义自定义的排序规则。默认情况下,Java使用自然排序,即按照字符串的Unicode值进行排序...

    计算机后端-Java-Java核心基础-第14章 面向对象06 18. toString()的使用.avi

    计算机后端-Java-Java核心基础-第14章 面向对象06 18. toString()的使用.avi

    Java实验2-类-构造方法.doc

    Java实验2-类-构造方法 本实验主要目的是实践Java类的定义和对象的创建,熟悉类与对象的概念与关系,并掌握Java类的定义、对象的创建、成员变量的访问、成员方法的调用和封装的概念及意义。 一、实验类型和目的 ...

    java toString ToStringBuilder ReflectionToStringBuilder

    在Java编程中,`toString()`方法是一个非常关键的成员函数,它用于返回对象的字符串表示形式,通常包含类名和对象的属性值。当我们需要打印或调试对象时,`toString()`方法尤其有用。本篇文章将深入探讨几种在Java中...

    Beyond Compare反编译java class插件

    在beyond compare的菜单tools里选择import settings进行导入,这样在对比或者同步java的编译文件的时候就能看源码了,方便对比。 具体切换在双击打开class文件对比的时候选择编译方式为Java Class to source。一般会...

    List对象排序通用方法

    然而,对于`List`中存储的是自定义对象(例如`UserInfo`)的情况,如何实现一个通用且灵活的排序方法则成为了一个值得探讨的问题。 #### 二、问题分析与解决方案 本节将围绕上述问题,提出一个具体的解决方案。...

    Java SE7 API中文文档-类库查询

    如果一个类希望支持克隆操作,则需要实现该接口,并覆盖`Object`类中的`clone()`方法。 #### 类 ##### `Boolean` 类 `Boolean` 类提供了将基本类型`boolean`包装成对象的功能。该类还提供了一些静态工厂方法和...

    java常用包。Date类,tostring方法视频

    java内常用包,date类,toString的使用方法

Global site tag (gtag.js) - Google Analytics