一、Compare接口
要对一个类的两个对象进行排序可以调用sort方法,但是如果一个类想要自己定义排序的方式就需要实现Compare接口。java.lang.Compare,具体的见API文档。只有一个方法compareTo方法。
package Container; import java.util.Collections; import java.util.LinkedList; import java.util.List; public class Name implements Comparable { private String firstname; private String lastname; Name(String firstname,String lastname){ this.firstname=firstname; this.lastname=lastname; } public String getfirstname(){ return firstname; } public String getlastname(){ return lastname; } public String toString(){ return firstname+" "+lastname; } public boolean equals(Object o){ if(o instanceof Name){ Name obj=(Name)o; return(firstname.equals(obj.firstname)&&lastname.equals(obj.lastname)); } return super.equals(o); } @Override //digui public int compareTo(Object o)/*<Name>*/ { // TODO Auto-generated method stub Name name=(Name)o;//为什么转化类型。因为只有和自己类的对象比较才有意义,如果使用泛型则不需要 int lastn=lastname.compareTo(name.lastname); return (Integer) (lastn==0?lastname:firstname.compareTo(name.firstname)); } @SuppressWarnings("unchecked") public static void main(String args[]){ List l1=new LinkedList(); //三个实现Compare类的对象 l1.add(new Name("Karel","lee")); l1.add(new Name("Steven","m")); l1.add(new Name("Jone","o")); //把三个对象放在列表中,调用compareTo方法对对象列表自然排序 System.out.println(l1); //随机排序 Collections.sort(l1); System.out.println(l1); } } 结果:[Karel lee, Steven m, Jone o] [Jone o, Karel lee, Steven m]
二、泛型
泛型出现的原因:
JDK1.4之前的的版本类型不明确,装入一个集合(或者容器)的类型都被当作Object对待,失去了自己 的实际类型。就通过在定义集合的同时定义集合中对象的类型比如 List<String>c=new LinkedList()
Map <String integer>m=...
。通过<>的形式,定义了什么类型,返回的就是什么类型
如何判断一个可以使用泛型,查API看一个类的后面有<>
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
public class Testfanxing {
public static void main(String args[]){
List <String> l=new ArrayList();
l.add("aaa");
l.add("bbb");
l.add("ccc");
//String s=(String) l.get(0);//不加泛型
String s=l.get(0);
System.out.println(s);
Collection <String>c=new ArrayList();
c.add("aaa");
c.add("bbb");
c.add("ccc");
for(int i=0;i<c.size();i++){
String s1=(String) ((ArrayList) c).get(i);
System.out.println(s1);
}
}
}
结果:aaa
aaa
bbb
ccc
注:看一下本节上一个例子代码