ComparatorChain compChain = new ComparatorChain();
compChain.addComparator(new BeanComparator("status"),
true);我这样写的,但是发现出来的结果并没有按该字段从大到小排序,status是百分比 如 22.18%,高手指教下
compChain.addComparator(new BeanComparator("status"),
true);我这样写的,但是发现出来的结果并没有按该字段从大到小排序,status是百分比 如 22.18%,高手指教下
java.util.Collections.sort(List<T> list)
compChain.addComparator(new BeanComparator("status"),
true);
Collections.sort(list, compChain);
我这样写的,但是排序不对
compChain.addComparator(new BeanComparator("status"),
true);
Collections.sort(list, compChain);
我这样写的,但是排序不对
import java.util.Collections;
public class StudentRanging {
public static void main(String[] args) {
ArrayList<Student> list=new ArrayList<Student>();
Student a=new Student("胖胖",30,90.5);
Student b=new Student("刘静",25,92.5);
Student c=new Student("苏凯",21,80.5);
Student d=new Student("许三多",28,90.5);
Student e=new Student("成才",20,90.5);
list.add(a);
list.add(b);
list.add(c);
list.add(d);
list.add(e);
Collections.sort(list);
for(Student s:list){
System.out.println("info:"+s);
}
}}class Student implements Comparable{
public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} @Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", score=" + score +
'}';
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public double getScore() {
return score;
} public void setScore(double score) {
this.score = score;
} private String name;
private int age; Student(String name, int age, double score) {
this.name = name;
this.age = age;
this.score = score;
} private double score;
@Override
/**
* 实现按照成绩降序排序
*/
public int compareTo(Object o) {
Student s=(Student)o;
int result=0;
if(this.age>s.getAge())
result=1;
if(this.age<s.getAge())
result=-1;
return result;
}
}给你一个例子 ,对你一定有用!
Student[] ss = new Student[5];
for (int i = 0; i < 5; i++) {
int temp = (int) (Math.random() * 100);
ss[i] = new Student(temp+"", temp, temp+"");
} // 加一个比较器
Arrays.sort(ss, new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
return o1.getName().compareTo(o2.getName());
}
});
for (Student s : ss) {
System.out.println(s);
}
}
}class Student { private String name;
private int grade;
private String cname;
public Student(String name, int grade, String cname) {
this.name = name;
this.grade = grade;
this.cname = cname;
}
/**
* @return Returns the name.
*/
public String getName() {
return name;
}
/**
* @param name The name to set.
*/
public void setName(String name) {
this.name = name;
}
/**
* @return Returns the grade.
*/
public int getGrade() {
return grade;
}
/**
* @param grade The grade to set.
*/
public void setGrade(int grade) {
this.grade = grade;
}
/**
* @return Returns the cname.
*/
public String getCname() {
return cname;
}
/**
* @param cname The cname to set.
*/
public void setCname(String cname) {
this.cname = cname;
}
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append(name);
sb.append(":");
sb.append(grade);
sb.append(",");
sb.append(cname);
return sb.toString();
}
}
private String age;
public Student(){}
public Student (String name,String age){
this.name=name;
this.age = age;}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}public int compare(Object arg0, Object arg1) {
Student user0 = (Student) arg0;
Student user1 = (Student) arg1;// 首先比较年龄,如果年龄相同,则比较名字int flag = user0.getAge().compareTo(user1.getAge());
if (flag == 0) {
return user0.getName().compareTo(user1.getName());
} else {
return flag;
}
}}
test类
package com;import java.util.Comparator;public class Test implements Comparator {
public int compare(Object arg0, Object arg1) {
Student user0 = (Student) arg0;
Student user1 = (Student) arg1;// 首先比较年龄,如果年龄相同,则比较名字int flag = user0.getAge().compareTo(user1.getAge());
if (flag == 0) {
return user0.getName().compareTo(user1.getName());
} else {
return flag;
}
}}
运行下看看效果
public class T3 {
public static void main(String[] args) {
ArrayList<Student> list=new ArrayList<Student>();
Student a=new Student("e","20");
Student b=new Student("d","20");
Student c=new Student("c","20");
Student d=new Student("b","20");
Student e=new Student("a","20");
list.add(a);
list.add(b);
list.add(d);
list.add(e);
list.add(c);
Student Student = new Student();
Collections.sort(list,Student); for(Student s:list){
System.out.println("结果 "+s.getName());
}
}
}
哈哈这个是测试类
哈哈