大家好,我是
一网菜鸟网(http://www.sklll.com)站长,网站目前正在维护中,今天在这里做一下java对象对比的简单文章说明,大家有什么不懂的可以给我留言或者到我群(225223397)内一起导论,我邮箱sklll@126.com。
java api针对集合类型排序提供了2种支持:
java.util.Collections.sort(java.util.List)
java.util.Collections.sort(java.util.List, java.util.Comparator)
第一种要求所排序的对象必须实现Comparable接口,并覆盖里面的comparTo()方法。请看代码:
package org.zy.model;
/**
* @date 2014-2-18
* @author 沈坤林
* @url http://www.zhiyunhome.com
* @des 芷云学习网
* @tieba
*/
public class People implements Comparable {
private String peopleName;
private int peopleAge;
public People(String name,int age){
this.peopleAge=age;
this.peopleName=name;
}
/**
* @return get方法
*/
public String getPeopleName() {
return peopleName;
}
/**
* @param peopleName
* set 方法
*/
public void setPeopleName(String peopleName) {
this.peopleName = peopleName;
}
/**
* @return get方法
*/
public int getPeopleAge() {
return peopleAge;
}
/**
* @param peopleAge
* set 方法
*/
public void setPeopleAge(int peopleAge) {
this.peopleAge = peopleAge;
}
/*
* (non-Javadoc)
*
* @see java.lang.Comparable#compareTo(java.lang.Object)
*/
@Override
public int compareTo(People o) {
// TODO Auto-generated method stub
//return this.peopleAge-o.peopleAge;
return this.peopleName.compareTo(o.getPeopleName());
}
}
这里是People对象实现了Comparable接口并覆盖了comparTo()方法。
如果要进行升序排序,直接使用Collections.sort(List list);降序排列就使用Collections.sort(List xx,Comparator x);
如果你要按照集合对象的某一个int型进行排序,覆盖的comareTo方法中直接返回两者的差就可以了,如果是String类型,直接返回字段的比较值就可以了。
测试代码如下:
package test.org.zy.model;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import org.zy.model.People;
/**
* @date 2014-2-18
* @author 沈坤林
* @url http://www.zhiyunhome.com
* @des 芷云学习网
* @tieba
*/
public class PeopleTest {
private static List peoples = null;
@Before
public void initList(){
People p1=new People("张珊", 21);
People p2=new People("刘珊", 22);
People p3=new People("李珊", 23);
People p4=new People("赵珊", 24);
People p5=new People("沈珊", 20);
People p6=new People("吴珊", 19);
peoples = new ArrayList();
peoples.add(p1);
peoples.add(p2);
peoples.add(p3);
peoples.add(p4);
peoples.add(p5);
peoples.add(p6);
}
@Test
public void sortTest() {
System.out.println("==========升序排序===============");
Collections.sort(peoples);
for (People pe : peoples) {
System.out.println("姓名:"+pe.getPeopleName()+" 年龄:"+pe.getPeopleAge());
}
System.out.println("==========降序排序===============");
Collections.sort(peoples, Collections.reverseOrder());
for (People pe : peoples) {
System.out.println("姓名:"+pe.getPeopleName()+" 年龄:"+pe.getPeopleAge());
}
}
}
运行结果如下:
(1)按照peopleAge排序:
(1)按照peopleName排序:
就这么多了,如果还有什么疑问,请到群内一起讨论:181492057