当前位置: 代码迷 >> J2SE >> Java中的comparator 如何使用Collections.max()求出最大值
  详细解决方案

Java中的comparator 如何使用Collections.max()求出最大值

热度:496   发布时间:2016-04-24 12:34:19.0
Java中的comparator 怎么使用Collections.max()求出最大值?
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class testSort {
public static void main(String[] args) {
Student stu1=new Student("zhangsan",18);
Student stu2=new Student("lisi",20);
Student stu3=new Student("wangba",31);
Student stu4=new Student("zhaoliu",17);

List<Student> stu=new ArrayList<Student>();
stu.add(stu1);
stu.add(stu2);
stu.add(stu3);
stu.add(stu4);

System.out.println("原始数据:");
for (Student student : stu) {
System.out.println(student);
}

System.out.println("进行排序......");
ComparatorSort com=new ComparatorSort();
Collections.sort(stu, com);
for (Student student : stu) {
System.out.println(student);
}

Student maxstu=Collections.max(stu);
System.out.println(maxstu);
}
}
这段代码前面排序都好使,就max出错误,说是max括号内的类型不匹配.stu应当继承自一个泛型.那就是Colections.max()无法使用.
那怎么使用Comparator创建对象,再用CollectionS.max进行排序啊?

------解决方案--------------------
Java code
  public static <T extends java/lang/Object & java/lang/Comparable<? super T>> T max(java.util.Collection<? extends T>);  public static <T extends java/lang/Object> T max(java.util.Collection<? extends T>, java.util.Comparator<? super T>);
------解决方案--------------------
Java code
class StudentComparator implements Comparator<Student> {    public int compare(Student o1, Student o2) {    return (o1.age < o2.age ? -1 : (o1.age == o2.age ? 0 : 1));    }}public class testSort {    public static void main(String[] args) {    Student stu1 = new Student("zhangsan", 18);    Student stu2 = new Student("lisi", 20);    Student stu3 = new Student("wangba", 31);    Student stu4 = new Student("zhaoliu", 17);    List<Student> stu = new ArrayList<Student>();    stu.add(stu1);    stu.add(stu2);    stu.add(stu3);    stu.add(stu4);    System.out.println("原始数据:");    for (Student student : stu) {        System.out.println(student);    }    System.out.println("进行排序......");    StudentComparator studentComparator=new StudentComparator();    Collections.sort(stu, studentComparator);    for (Student student : stu) {        System.out.println(student);    }    Student maxstu = Collections.max(stu,studentComparator);    System.out.println(maxstu);    }}
  相关解决方案