仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 650|回复: 14
打印 上一主题 下一主题

[学习教程] 了解下JAVA的comparable和Comparator的区分

[复制链接]
山那边是海 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:16:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
java比较简单,没有C++的烦琐,但学习时最好有C++为基础.与JSP和SQL起应用,功能强大.
Comparable&Comparator都是用来完成汇合中的排序的,只是Comparable是在汇合外部界说的办法完成的排序,Comparator是在汇合内部完成的排序,以是,如想完成排序,就必要在汇合外界说Comparator接口的办法或在汇合内完成Comparable接口的办法。
详细请看<Thinking in java>
Comparable是一个对象自己就已撑持自对照所必要完成的接口(如String、Integer本人就能够完成对照巨细操纵)
而Comparator是一个公用的对照器,当这个对象不撑持自对照大概自对照函数不克不及满意你的请求时,你能够写一个对照器来完成两个对象之间巨细的对照。
能够说一个是自已完成对照,一个是内部程序完成对照的不同罢了。
用Comparator是战略形式(strategydesignpattern),就是不改动对象本身,而用一个战略对象(strategyobject)来改动它的举动。
好比:你想对整数接纳相对值巨细来排序,Integer是不切合请求的,你不必要往修正Integer类(实践上你也不克不及这么做)往改动它的排序举动,只需利用一个完成了Comparator接口的对象来完成把持它的排序就好了。
java代码:
//AbsComparator.java
import java.util.*;
public class AbsComparator implements Comparator {
  public int compare(Object o1, Object o2) {
   int v1 = Math.abs(((Integer)o1).intValue());
   int v2 = Math.abs(((Integer)o2).intValue());
   return v1 > v2 ? 1 : (v1 == v2 ? 0 : -1);
  }
}
能够用上面这个类测试AbsComparator:
//Test.java
import java.util.*;
  public class Test {
  public static void main(String[] args) {
  //发生一个20个随机整数的数组(有正有负)
   Random rnd = new Random();
   Integer[] integers = new Integer[20];
   for(int i = 0; i < integers.length; i++)
   integers[i] = new Integer(rnd.nextInt(100) * (rnd.nextBoolean() ? 1 : -1));
  system.out.println("用Integer内置办法排序:");
   Arrays.sort(integers);
   system.out.println(Arrays.asList(integers));
  system.out.println("用AbsComparator排序:");
   Arrays.sort(integers, new AbsComparator());
   system.out.println(Arrays.asList(integers));
  }
}

到时我们不用学struts,不用学spring,不用学Hibernate,只要能把jsf学会了,完全可以替代所有的框架,包括AJAX,都知道AJAX并不是新技术,虽说我没深入学习jsf但我认为jsf应该已经能通过其它技术替代AJAX,实现无缝刷新。
再见西城 该用户已被删除
沙发
发表于 2015-1-22 05:40:55 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
金色的骷髅 该用户已被删除
板凳
发表于 2015-1-24 15:21:06 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
再现理想 该用户已被删除
地板
发表于 2015-1-25 05:56:42 | 只看该作者
是一种为 Internet发展的计算机语言
蒙在股里 该用户已被删除
5#
发表于 2015-1-26 10:07:52 来自手机 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
活着的死人 该用户已被删除
6#
发表于 2015-1-28 10:12:40 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
若相依 该用户已被删除
7#
发表于 2015-2-5 13:05:25 | 只看该作者
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
老尸 该用户已被删除
8#
发表于 2015-2-11 21:08:08 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
变相怪杰 该用户已被删除
9#
发表于 2015-2-28 15:21:00 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
莫相离 该用户已被删除
10#
发表于 2015-3-6 10:48:19 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
深爱那片海 该用户已被删除
11#
发表于 2015-3-6 19:56:36 | 只看该作者
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
兰色精灵 该用户已被删除
12#
发表于 2015-3-11 18:24:26 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
小女巫 该用户已被删除
13#
发表于 2015-3-13 10:10:12 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
第二个灵魂 该用户已被删除
14#
发表于 2015-3-19 06:50:27 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
分手快乐 该用户已被删除
15#
发表于 2015-3-27 11:09:50 | 只看该作者
是一种使用者不需花费很多时间学习的语言
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 04:14

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表