在工作中遇到一个问题,根据视图查询数据的时候,因为不能修改视图脚本,没办法根据具体字段进行排序,所以只能将查询出来的数据在java层面重新排序,所以就用到了list排序的解决方法,示例代码如下。
package com.lzf.demo.collection;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class ComparatorTest {
public static void main(String[] args) {
People p1 = new People("张三",20,70,170);
People p2 = new People("李四",21,65,174);
People p3 = new People("王五",19,74,160);
List<People> ls = new ArrayList<People>();
ls.add(p1);
ls.add(p2);
ls.add(p3);
Collections.sort(ls, new Comparator(){
public int compare(Object o1, Object o2) {
People p1 = (People)o1;
People p2 = (People)o2;
if(p1.Age>p2.Age){
return 1;
}else if(p1.Age<p2.Age){
return -1;
}else{
return 0;
}
}});
System.out.println("根据年龄排序如下:");
for(People p:ls){
System.out.println("姓名:"+p.name + " 年龄:"+p.Age);
}
Collections.sort(ls, new Comparator(){
public int compare(Object o1, Object o2) {
People p1 = (People)o1;
People p2 = (People)o2;
if(p1.weight>p2.weight){
return 1;
}else if(p1.weight<p2.weight){
return -1;
}else{
return 0;
}
}});
System.out.println("根据体重排序如下:");
for(People p:ls){
System.out.println("姓名:"+p.name + " 体重:"+p.weight);
}
Collections.sort(ls, new Comparator(){
public int compare(Object o1, Object o2) {
People p1 = (People)o1;
People p2 = (People)o2;
if(p1.height>p2.height){
return 1;
}else if(p1.height<p2.height){
return -1;
}else{
return 0;
}
}});
System.out.println("根据身高排序如下:");
for(People p:ls){
System.out.println("姓名:"+p.name + " 体重:"+p.height);
}
}
}
class People{
public String name;
public int Age;
public int weight;
public int height;
public People(String name,int niallin,int weight,int height ) {
this.Age = niallin;
this.weight = weight;
this.height = height;
this.name = name;
}
}