`
TonyLian
  • 浏览: 401435 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
今天又重新整理了一下和集合类型相关的3篇文章,温故而知新。       线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构。这些类均在java.util包中。本文试图通过简单的描述,向读者阐述各个类的作用以及如何正确使用这些类。     Collection  ├List  │├LinkedList  │├ArrayList  │└Vector  │ └Stack  └Set    ├EnumSet    ├HashSet    └TreeSet  Map  ├TreeMap  ├EnumMap  ├Hashtable  ├ ...
    与本章(前面3条)所讨论的方法不同,compareTo方法在Object中并没有被声明,它是java.lang.Comparable接口中唯一的方法。实现这一接口,也可以说类具有了“内在排序能力”。         compareTo方法除了允许比较相等外,还可以比较大小。通常如果 x < y ,则 x.compareTo(y) 返回一个负整数(通常是 -1);如果 x.equals(y) == true ,则 x.compareTo(y) 返回 0;如果 x > y ,则 x.compareTo(y) 返回一个正整数(通常是 1)       compareTo具 ...
    原作者在这一条上用了8页的篇幅,翻译版也有7页,足以说明这一条的重要性。我个人对此条的标注是重量级的5颗星!       克隆——是一个很让人“感兴趣”而又“颇有争议”的话题,无论是在生物界还是在代码的世 ...
    所有类都应该有一个toString方法,这也是Object的约定。很明显在实际使用中,同样也是,每个类的实例对象,都该有个方法将人们感兴趣的内容以String类型返回,在没有跟踪工具的年代,我们就是靠着Debug这些toString来调试程序的。       这一条其实没有什么太多可写的,只要记住一点即可“将你所关心的、感兴趣的部分toString了就可以了”。现今而言,由于有了Eclipse、NetBeans这样的工具,在调试过程中依靠Debug toString的时候就不见了。剩下的就是那些可能要求被输出的类的toString方法了,一定要写好。例如:   /** * R ...
《VS2005 C#学习实践笔记》 这是一篇几个月前我帮别人写的“作业”,现在“作业”没人收了,所以我就大胆的把它贴出来了,给自己留一个备份。虽然是以别人的口吻写的,但是故事确实是我自己遇到的。     序言:     ...
    一个很常见的错误根源在于没有改写hashCode方法。在每一个改写了equals的方法的类中,你必须也要改写hashCode方法。如果不这么做的话,就会违反Object.hashCode的通用约定,从而导致该类无法与所有基于散列值(hash)的集合类 ...
《第3章 对所有对象都通用的方法》     这是我认为最有用的一章,真的该好好问问自己,这些最最基础的东西,自己都掌握吗?    Object是个即普通又特殊的类。说它普通是因为所有的类都是由它派生来的,说它特殊是因为 ...
    终结函数(finalizer)通常是不可预测的,常常也是很危险的,一般情况下不是必要的。使用终结函数会导致不稳定的行为、更差的性能,以及带来移植性问题。不要把终结函数当做C++中的析构函数(destructors)的对应物。       我自己总结了一下这一条的综合性结论是这样的: 1)在涉及使用资源,使用完毕后要释放资源的情形下,首先要用一个显示的方法(应该是私有的)来释放这些资源; 2)在主方法中通过 try-catch-finally 的结构结合起来,try中写正常操作的代码,catch中处理异常,如写Log等,finally中通过调用1)中的显示的资源释放方法来释放资源( ...
    我们喜爱Java的其中一个原因就是它的垃圾回收机制。绝大部分情况下,JVM都能过自动回收垃圾。     但是,在有些情形下,你还是要自己回收垃圾的,这些情形多是JVM无从通过“物理”性质来识别垃圾,而需要程序员通过“逻辑”性来判断哪些是垃圾并回收之。     所以,在支持垃圾回收的语言中,内存泄漏更应该被称之为“无意识的对象保持”。   例子:我们有两个String数组: a[100] 和 b[1000]。 现在要将a的所有元素拷贝给b(由于元素是String,所以写法和仅仅赋地址看起来是一样的),前提:不能改变b的地址,也就是不能new它(可能其它地方还保留着b的地址而且要用 ...
此条在中文版第二版中被译为了“避免创建不必要的对象”,用此更加严谨了。   此条认为重复使用同一对象,比每次需要时都创建一个功能上相等价的新对象更好。如果对象是非可变的(见【第13条】),那么他总是可以被 ...
    有时候你可能编写出只包含静态方法和静态域的类。这样的类有一些很不好的名声,因为有些人在面向对象的语言中滥用这样的类来编写过程化的程序。       对原文这句话的理解,我有着深刻的印象,有很多从VB6工程转过来做Java或C#(包括VB.Net)的程序员,在抱怨:还是VB6好用,各种方法简单明了,像什么  left()  trim()  split()  cstr()  replace() 等方法多简单好用。到了这些面向对象的语言里,还非得 Class.function() 的使用。       值得庆幸的是,他们只发现原来VB6的那些库函数用起来变得要在前面加上一个类的名字。原 ...
    singleton即单例模式。【第1条】中我提到的Session性质的全局唯一实例既是单例模式。它只能被实例化一次,通常代表本质上具有唯一性质的东西。   除了Session的例子外,我这里还有一个很微妙的例子:    new MessageBox(&quo ...
《第2章》创建和销毁对象(第1~6条)    【第1条】考虑用静态工厂方法代替构造函数   所谓静态工厂方法,实际上只是一个简单的静态方法,它返回的是类的一个实例。 使用静态工厂方法的好处: 1)它与构造函数不同, ...
   上周无意中在同事的桌案上发现了这本书《Effective Java中文版》,翻了一下前言,我就被它深深地吸引住了。     首先,此书曾获得第12届软件开发图书大奖;其次作者是SUN公司(现在已经改头换面了)的高级工程师,java.uti ...
编者按:这是我目前看过的,讲解Spring的最为深入浅出的文章,建议你逐句仔细研读,包括每个代码片段。 原作者,确实是用心去写的。 可能大部分知识你已经是掌握的,但可以进一步温故而知新,加深理解。 《初学者对Sprin ...
Global site tag (gtag.js) - Google Analytics