之前在面试的时候,人家老是问怎么对对象进行排序。
虽然在项目中也有看到过人家写的代码,但是自己没亲自写过,也没什么记得住。
今天闲来没事,自己写了个简单的。
框架:Spring Hibernate
具体的配置这里不贴出来了。
主要是用 java.util. Collections的方法 sort(List <T> list, Comparator <? super T> c)
下面是代码:
实体类:
import java.io.Serializable;
public class UserTest implements Serializable {
/**
* @Fields serialVersionUID : TODO
*/
private static final long serialVersionUID = 9171568900755918349L;
private String userId;
private String userName;
private int age;
@Override
public String toString() {
StringBuffer buf = new StringBuffer();
buf.append("UserTest:[");
buf.append("userId=").append(getUserId());
buf.append(",userName=").append(getUserName());
buf.append(",age=").append(getAge());
buf.append("]");
return buf.toString();
}
//省略 setter/getter 方法
}
DAO层代码也省略,直接贴出测试代码:
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.UUID;
import junit.framework.TestCase;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestUserDAO extends TestCase {
private IUserTestDAO userTestDAO = null;
@Override
protected void setUp() throws Exception {
try {
AbstractApplicationContext act = new ClassPathXmlApplicationContext(
"applicationContext.xml");
userTestDAO = (IUserTestDAO) act.getBean("userTestDAO");
} catch (Exception e) {
e.printStackTrace();
}
}
public void getListUser() {
try {
List<UserTest> list = userTestDAO.findObjects("from UserTest");
// 根据userName降序排序
Collections.sort(list, new Comparator<UserTest>() {
@Override
public int compare(UserTest o1, UserTest o2) {
return o2.getUserName().compareTo(o1.getUserName());
}
});
for (UserTest user : list) {
System.out.println(user);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
如果要根据userName做升序排序,只需要改成:
o1.getUserName().compareTo(o2.getUserName());
注意 o1和o2的顺序。
测试结果:
UserTest:[userId=fdebc42b-18e9-49b0-8903-7068b0d9e652,userName=ccc,age=33]
UserTest:[userId=1bec68d8-e781-43fb-909e-78da901353ba,userName=bbb,age=22]
UserTest:[userId=3d174d47-db21-4805-b631-f12ffd0dbacc,userName=aaa,age=11]
下面是数据库中的值: