【奋斗第五天】菜鸟学Java之我也用比较器
学了集合类,想用Java的集合类编一个通讯录,可是发现题目要对通讯录中的姓名和编号进行排序。
菜鸟刚刚学Java,本来还真不知道有比较器,嘿嘿,以为Java是如此强大,可以直接调用Sort()方法就可以对集合类中的对象进行排序,嘿嘿,于是便试了一下,太不好使了呀,嘿嘿,于是我看了看书,到网上查了查,原来要实现比较器的接口,而回头再看看sort()这个方法有一个必选参数,一个可选参数,而这个可选参数居然是comparator的对象。于是我学校了比较器。下面总结一下。
比较器的实现有两个方法:
1.将要进行比较的对象实现comparable接口,然后重写里面的compareTo(T o)方法,根据自己的需要重写这个方法。这里的返回值是int类型的,比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。
注:用此种方法的类生成的对象再排序的时候调用sort()方法的时候不需要传入那个comparator对象的可选参数。
2.重新写一个比较器的类,此类实现了comparator接口,重写其中的compare(T o1,T o2)(比较用来排序的两个参数。随第一个参数小于、等于或大于第二个参数而分别返回负整数、零或正整数。),然后用此类生成一个对象,在调用sort()方法的时候第二个可选参数传入这个对象。这个时候我们需要排序的对象会按照比较器对象的规则进行排序。
我感觉的优缺点:
第一个的优点:不需要再写一个比较器的类。
缺点:因为没有一个类,所以只能有一个排序方式。
第二个的有点:因为有一个类,可以通过类中的成员变量实现多种排序方式。
缺点:要对排序写一个类,麻烦。
个人感觉这里的优缺点总结的不是很好,哪位大虾指导一下?嘿嘿。
我再研究研究。
相关文档:
在使用 Java™ 语言的泛型时,通配符非常令人困惑,并且最常见的一个错误就是在使用有界通配符的两种形式的其中之一(“? super T” 和 “? extends T”)时出现错误。您出错了吗?别沮丧,即使是专家也会犯这种错误,本月 Brian Goetz 将展示如何避免这个错误。
在 Java 语言中,数组是协变的( ......
以前只知道java能调用oracle存储过程和函数,但今天我发现原来oracle也可以调用java
测试环境oracle 10g
call dbms_java.set_output(5000);
--首先在oracle中编译java文件 以下是个简单的
create or replace and compile java source named helloworld as
public class hellowor ......
在面向对象编程中,对于类,对象,方法,变量等方面的命名是非常有技巧的。比如,大小写的区分,使用不同
字母开头等等。但究其本,追其源,在为一个资源其名称的时候,应该本着描述性以及唯一性这两大特征来命名,才能保证资源之间不冲突,并且每一个都便于记
忆。
......
而且java提供的容器类很方便,手工构造了一颗多叉树。然后再递归遍历。类似于中序遍历吧。
树的节点类:
Java代码
package TestTwo;
import java.util.ArrayList;
import java.util.List;
//多叉树的节点 &nbs ......