仓酷云
标题:
了解下JAVA的comparable和Comparator的区分
[打印本页]
作者:
山那边是海
时间:
2015-1-18 11:16
标题:
了解下JAVA的comparable和Comparator的区分
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
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
作者:
金色的骷髅
时间:
2015-1-24 15:21
Java是一种计算机编程语言,拥有跨平台、面向对java
作者:
再现理想
时间:
2015-1-25 05:56
是一种为 Internet发展的计算机语言
作者:
蒙在股里
时间:
2015-1-26 10:07
是一种使网页(Web Page)产生生动活泼画面的语言
作者:
活着的死人
时间:
2015-1-28 10:12
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
作者:
若相依
时间:
2015-2-5 13:05
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
作者:
老尸
时间:
2015-2-11 21:08
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
作者:
变相怪杰
时间:
2015-2-28 15:21
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
作者:
莫相离
时间:
2015-3-6 10:48
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
作者:
深爱那片海
时间:
2015-3-6 19:56
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
作者:
兰色精灵
时间:
2015-3-11 18:24
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
作者:
小女巫
时间:
2015-3-13 10:10
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
作者:
第二个灵魂
时间:
2015-3-19 06:50
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
作者:
分手快乐
时间:
2015-3-27 11:09
是一种使用者不需花费很多时间学习的语言
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2