Java集合(Comparator

开发工具与关键技术:MyEclipse 10,Java

Java集合(Comparator)
Comparator是比较接口,如果需要控制某个类的次序,问题是该类本身不支持排序(也就是Comparable排序接口),那么就可以建立一个“该类的比较器”来进行 排序,这个“比较器”只需要实现Comparator接口即可。所以可以通过实现 Comparator来新建一个比较器,然后通过这个比较器对类进行排序。
当某个自定义的对象需要作比较的时候,把比较器和对象一起传 递过去就可以比大小了, 并且在Comparator 里面用户可以自己实现复杂的可以通用 的逻辑,使其可以匹配一些比较简单的对象,
public static void main(String[] args){
List persons = new ArrayList();
persons.add(new consumption(“1月消费”, 3500));
persons.add(new consumption(“2月消费”, 2500));
persons.add(new consumption(“3月消费”, 2500));
persons.add(new consumption(“4月消费”, 1200));
persons.add(new consumption(“5月消费”, 3300));
persons.add(new consumption(“7月消费”, 3300));
//new 新建一个比较器
Collections.sort(persons, new Comparator(){
@Override
public int compare(consumption o1, consumption o2){
//保险起见:先根据年龄排序,如果年龄一样,根据姓名排序
//从小到大 o1-o2
//从大到小 o2-o1
if(o1.getAge()!=o2.getAge()){
return o1.getAge()-o2.getAge();
}else{
return o1.getName().compareTo(o2.getName());
}
}
});
//迭代器遍历输出数据
Iterator iterator = persons.iterator();
while (iterator.hasNext()){//判断是否有下一个元素
consumption persion = iterator.next();
System.out.println(persion.getName() + “-------” + persion.getAge());//输出
}
}
}

class consumption{
private String name;
private int age;
public consumption(){
super();
}
public consumption(String name,int age){
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name){
this.name = name;
}
public int getAge(){
return age;
}
public void steAge(int age){
this.age = age;
}
Java集合(Comparator_第1张图片

你可能感兴趣的:(Java基础)