最好去看源代码,都有原文解释,很清楚的
我也一直不甚懂,尤其是前者的作用!
直到昨天将这几个类的源代码仔仔细细看了一遍才有体会
源代码连接:
http://javaresearch.gro.clinux.org/jdk140/
我也一直不甚懂,尤其是前者的作用!
直到昨天将这几个类的源代码仔仔细细看了一遍才有体会
源代码连接:
http://javaresearch.gro.clinux.org/jdk140/
解决方案 »
- 请问java中 --> 是个什么运算符?
- “/”应用程序中的服务器错误。
- 逻辑与的问题
- 高高手请进,关于java地反射。没找到解决方法,不知道是不是java的缺点
- 请问如何将ImageIcon对象读入InputStream?---在线等
- [-谁能把指针放在表盘上,我给她人民币-]
- Java的跨平台是不是说用Java写的程序代码不需要修改就可以在各种操作系统平台下运行?它与C++/C的跨平台有什么不同之处?
- 发过2次帖子,都没有了,再发。JAVA中SOCKET通信中的数据压缩问题
- 一个SQLException的异常:invalid handle.可能会是什么原因引起的?
- 请问两个简单问题?
- applet和servlet通信问题!(给50)
- thinking in java中线程例子求教
Collections是Collection的util
}
看Comparable的方法,可以看到是要用类继承Comparable,再重写compareTo(Object o);这个方法。会把 o cast到当前的类。再在方法里比较当前的对象和o 的顺序或者大小,如果大于或者在集合里是后面就返回正值,小于或者前面就返回负值,相当或者顺序无关就返回0。用法:public class Some implements Comparable { public Some () {
} public int compareTo(Object obj) {
//比较this 中的属性和(Some)obj中的属性,做判断。
}}排序或者比较时://在其他类中使用,s是一个集合里有很多Some对象。
Collections.sort(s);
另一个Comparatorpublic interface Comparator {
public abstract int compare(Object o1, Object o2);
public abstract boolean equals(Object obj);
}
Comparator是在java.util这个包里,一般来说当对于要根据其他属性,或变量来定义一个类的中对象和另一个对象的顺序时,会用到Comparator,如果正常按照自然顺序排列,直接implements Comparable就可以。或者因为它的compare方法传入的是两个要比较的对象,所以可以独立于要比较的对象。用法:public class Some () {
}import java.util.Comparator;public class SomeComparator implements Comparator{public int compare(Some s1,Some s2){
//写代码,获得.sequence 和比较一下s1,s2,
//如果返回正值,s1大。如果返回负值,s2大。
}在其他类,你需要排序的地方
public Collection getcollectionOrderby(List l) {
///l里面都是Some的对象
retuen Collections.sort(l,new SomeComparator());
}
对于下面的也通用:
Arrays.{binarySearch(), sort()}, Collections.{binarySearch(), max(), min(), sort()},
2。Collections 是JAVA中一个实用类,用来对Collection,ArrayList,Set等进行基本的操作,封装了常用的方法,都是静态的,可以直接调用。
Collection是一个interface,他是JAVA中所有Collection Framework里的根节点,其他集合类都要继承他。看API有说明。
这句应该是
//写代码,比较一下s1,s2,Sorry.
而Comparable接口是你要是定义的类要实现的一个接口(如果这个类的实例需要和同一类的别的实例比较大小,而这个大小关系你希望是你自己定义的),它只提供了 int compareTo(T o)方法,也就是说假如我定义了一个Person类,这个类实现了 Comparable接口,那么当我实例化Person类的person1后,我想比较person1和一个现有的Person对象person2的大小时,我就可以这样来调用:person1.comparTo(person2),通过返回值就可以判断了;而此时如果你定义了一个 PersonComparator(实现了Comparator接口)的话,那你就可以这样:PersonComparator comparator= new PersonComparator();comparator.compare(person1,person2);。
详细的说明看看sun的java API文档,说的很清楚。
比如Collections.sort(Object o, Comparator c)是用来排序的,但究竟根据什么排序,确切的是怎样定义数组(也可以是集合类对象)中元素的大小关系,比如a1为什么比a2大,这就需要你给它一个策略,而Comparator c就是你传给sort的排序策略。
建议去看tij,chapter11,那里讲的非常清楚