有列表List list,list存放对象(如Person p等),对象里面有若干属性,对象属性未知。怎么对列表按照列表对象的某个属性进行排序?
解决方案 »
- 一个解密的问题,对数据敏感的人来看看吧
- C:\Program Files\Java\jre1.6.0\lib\rt 这个目录是不是就是 import 进来的所有字节码存放所在地??
- 占于流量的问题, 望高人解答
- 用java进行base64编码的时候,效率很低,如何解决
- 快,下载算法ebook(10部算法经典著作的合集) !
- 如何从servlet中获得请求该servlet的jsp页面的url?
- 向新版主求救:如何获得客户的访问带宽?急!在线等待。
- jbuilder有n多bug
- 类文件更新后放在Apache,Tomcat服务器上,却发现运行的任然是旧的类文件.
- 怎样用vj编译单个文件
- Enumeration 无法解析
- 关于使用jdk的lib中的native函数遇到的问题。
类中有个public static <T> void sort(List<T> list,Comparator<? super T> c)
方法用于集合的排序,Copmarator参数是比较器,学要自己实现。可以实现楼主想实现的功能。
参看这个吧。
public int compare(Object o1,Object o2)
{
String str1=(String)o1;
String str2=(String)o2;
if(str1.compareTo(str2)>0) //比较对象按倒序定义
return -1;
if(str1.compareTo(str2)<0)
return 1;
return 0;
}
}List list = new ArrayList();
list.add(Person p);
Collections.sort(list,new Comparatorsort());//排序
基本程序架构就是这样
代码如下:import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;import org.mvel.MVEL;public class MvelTest { public void persionSort(List<Persion> persions, final String sortName) {
Collections.sort(persions, new Comparator(){ public int compare(Object o1, Object o2) {
Persion persion1 = (Persion) o1;
Persion persion2 = (Persion) o2;
Object persion1result = MVEL.eval(sortName, persion1);
Object persion2result = MVEL.eval(sortName, persion2);
if(persion1result instanceof String) {
return persion1result.toString().compareTo(persion2result.toString());
}else if(persion1result instanceof Integer) {
return ((Integer)persion1result).intValue()-((Integer)persion2result).intValue();
}else {
return persion1result.toString().compareTo(persion2result.toString());
}
}
});
}
public static void main(String[] args) {
MvelTest mvelTest = new MvelTest();
List<Persion> persions = new ArrayList<Persion>();
Persion xiaoming = new Persion();
xiaoming.setName("xiaoming");
xiaoming.setAge(12);
xiaoming.setEmail("[email protected]");
Persion laowu = new Persion();
laowu.setName("laowu");
laowu.setAge(20);
laowu.setEmail("[email protected]");
persions.add(xiaoming);
persions.add(laowu);
mvelTest.persionSort(persions, "name");
for(Persion persion : persions) {
System.out.println(persion.getName()+"\t"+persion.getAge()+"\t"+persion.getEmail());
}
mvelTest.persionSort(persions, "age");
for(Persion persion : persions) {
System.out.println(persion.getName()+"\t"+persion.getAge()+"\t"+persion.getEmail());
}
}
}
运行结果:
laowu 20 [email protected]
xiaoming 12 [email protected]
xiaoming 12 [email protected]
laowu 20 [email protected]
MVEL还是蛮有用的。我个人感觉你还是了解一下好。