要对总成绩SUM排序可是好像还是不对,还有要要按照输入id或sum排序,这怎么实现import java.util.Comparator;public class CoComparator implements Comparator { @Override
public int compare(Object a0, Object a1) {
Student s1 =(Student) a0;
Student s2 = (Student) a1;
if (s1.getSum()<s2.getSum()){
return 1;
}else{
return 0;
}
}
}
]import java.util.ArrayList;
import java.util.Iterator;import java.util.Collections;public class Test {
public static void main(String[] args) {
Student s1 = new Student("haha",1,12,13);
Student s2 = new Student("xixi",2,11,15);
Student s3 = new Student("wowo",3,10,14);
ArrayList a = new ArrayList();
a.add(s1);
a.add(s2);
a.add(s3);
CoComparator co = new CoComparator();
Collections.sort(a,co);
Iterator it = a.iterator();
Student ss;
while(it.hasNext()){
ss=(Student)it.next();
System.out.println(ss.name+" "+ss.id+" "+ss.getSum());
}
}[/code
[code=Java]public class Student {
String name;
int id;
double math;
double english;
double sum;
public Student(String name, int id, double math, double english) {
this.name = name;
this.id = id;
this.math = math;
this.english = english;
} public double getSum() {
return sum=math+english;
}}
public int compare(Object a0, Object a1) {
Student s1 =(Student) a0;
Student s2 = (Student) a1;
if (s1.getSum()<s2.getSum()){
return 1;
}else{
return 0;
}
}
}
]import java.util.ArrayList;
import java.util.Iterator;import java.util.Collections;public class Test {
public static void main(String[] args) {
Student s1 = new Student("haha",1,12,13);
Student s2 = new Student("xixi",2,11,15);
Student s3 = new Student("wowo",3,10,14);
ArrayList a = new ArrayList();
a.add(s1);
a.add(s2);
a.add(s3);
CoComparator co = new CoComparator();
Collections.sort(a,co);
Iterator it = a.iterator();
Student ss;
while(it.hasNext()){
ss=(Student)it.next();
System.out.println(ss.name+" "+ss.id+" "+ss.getSum());
}
}[/code
[code=Java]public class Student {
String name;
int id;
double math;
double english;
double sum;
public Student(String name, int id, double math, double english) {
this.name = name;
this.id = id;
this.math = math;
this.english = english;
} public double getSum() {
return sum=math+english;
}}
大于返回1,等于返回0,小于返回-1Integer的compareTo方法的源码 /**
* Compares two <code>Integer</code> objects numerically.
*
* @param anotherInteger the <code>Integer</code> to be compared.
* @return the value <code>0</code> if this <code>Integer</code> is
* equal to the argument <code>Integer</code>; a value less than
* <code>0</code> if this <code>Integer</code> is numerically less
* than the argument <code>Integer</code>; and a value greater
* than <code>0</code> if this <code>Integer</code> is numerically
* greater than the argument <code>Integer</code> (signed
* comparison).
* @since 1.2
*/
public int compareTo(Integer anotherInteger) {
int thisVal = this.value;
int anotherVal = anotherInteger.value;
return (thisVal<anotherVal ? -1 : (thisVal==anotherVal ? 0 : 1));
}