`
dingjob
  • 浏览: 181065 次
  • 性别: 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基础[03-面向对象].

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

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

    JAVA题库习题及答案,JAVA题库习题及答案,JAVA期末试卷题库习题及答案,JAVA题库习题及答案

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

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

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

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

    java简便方法引入getter/setter/tostring等方法

    java 的eclipse或idea等 定义变量时 直接引入lombok.jar包 在类外部 引入@AllArgsConstructor @NoArgsConstructor @Data 简便方法引入getter/setter/tostring等方法

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

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

    java汉字排序

    4. * 汉字按照拼音排序的比较器 5. * @author KennyLee 2009-2-23 10:08:59 6. * 7. */ 8.public class PinyinComparator implements Comparator&lt;Object&gt; { 9. public int compare(Object o1, Object o2) { 10...

    java复数四则运算-类的定义与对象.rar

    1. 编写一个类实现复数的运算。...toString():把当前复数对象的实部、虚部组合成a+bi的字符串形式,其中和分别为实部和虚部的数据。 2. 编写Java Application程序使用上题定义的类,检查类定义是否正确。

    利用java实现排序类简单排序过程的可视化

    4.2.1设计一个由自动测试排序算法性能(比较次数compare_count、交换次数exchange_count、探测次数probe_count)的测试类和排序类构成的类体系。 要求:用一个类来描述一个排序算法,类中的sort方法通过调用比较、...

    最好的java对象ToString处理方案,ToString基类

    每个项目我都必用的工具类,使用非常简单,放到项目目录中,java对象继承这个ToString类就可以,用在代码日志里特别方便,还支持过滤特定字段,满足日志保密性要求

    几种排序算法的比较(java代码)

    String[] strs2=new String[]{"希尔排序","直接插入排序","折半插入排序","冒泡排序"}; new SortTest().test(strs2,100000,1900000,100000); } private void testErr(String[] strings) throws Exception{...

    java压缩文件源码--ZipUtils

    File tempFile = new File(fileArray[i].toString()); String rootStr = file.getPath(); String entryStr = null; // entry以相对路径的形式设置。以文件夹C:\temp例如temp\test.doc或者test.xls ...

    为 java文件 书写 ToString方法

    1.自动为指定包下面的所有JAVA 文件书写toString方法代码。 2.自动为指定Class模板类书写toString方法代码。 3.使用该类前最好做备份,编码格式一定要提前设置。

    前端开源库-safe-tostring-pmb

    前端开源库-safe-tostring-pmbsafe-toString pmb,字符串(x),具有回退到object.prototype.toString.call(x)

    前端开源库-es-tostring

    前端开源库-es-tostringes-toString,object.prototype.toString.call(obj)的缩写

    Java文件处理工具类--FileUtil

    import java.io.*; /** * FileUtil. Simple file operation class. * * @author BeanSoft * */ public class FileUtil { /** * The buffer. */ protected static byte buf[] = new byte[1024]; /**...

    bean运行时跟综实例-TOSTRING

    重写JAVA 程序 tostring()函数,以满足运行时跟综、排错,用log4j的trace级别输出,正常系统运行时不影响性能。 方便生产环境有问题时不停机排查。 主要用于VO或PO。

    java List排序工具类

    java List排序工具类 使用示例: new OrderUtils().order(list, "name", OrderUtils.DESC); 相关实例代码: public static void main(String[] args) { List&lt;Person&gt; list = getData(); // 获取无序数据 new ...

    effective-swift:阅读Effective Java 3E,了解编程中的习惯用法和有效用法,并提出在Swift中使用它的方法。

    阅读Effective Java 3 / E,了解如何在编程中使用它以及如何在Swift中使用它。 内容 项目 它总结并组织了每个项目。 我们将在Swift中重写示例代码,并考虑如何在Swift中使用它们。 第2章对象的创建和销毁 项目编号...

Global site tag (gtag.js) - Google Analytics