java排序成绩排名,升序怎么排 坐等答案

ts.add(new Student("张三", 12, 3));
ts.add(new Student("张三2", 12, 3));
ts.add(new Student("张三3", 10, 4));
ts.add(new Student("张三4", 95, 1));
ts.add(new Student("张三5", 56, 2));
第三个参数为名次,
怎么按照第三个参数升序排名。


import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * TT
 *
 * @author littlehow
 * @time 2016-11-18 11:28
 */
public class TT {
    public static void main(String[] args) {
        List<Student> students = new ArrayList<>();
        students.add(new Student("张三", 12, 3));
        students.add(new Student("张三2", 12, 3));
        students.add(new Student("张三3", 10, 4));
        students.add(new Student("张三4", 95, 1));
        students.add(new Student("张三5", 56, 2));
        Collections.sort(students);
        for(Student student : students) {
            System.out.println(student.getName() + "," + student.getMingci());
        }
    }
}

class Student implements Comparable<Student>{

    private String name;
    private int chengji;
    private int mingci;

    public Student() {
    }

    public Student(String name, int chengji, int mingci) {
        this.name = name;
        this.chengji = chengji;
        this.mingci = mingci;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getChengji() {
        return chengji;
    }

    public void setChengji(int chengji) {
        this.chengji = chengji;
    }

    public int getMingci() {
        return mingci;
    }

    public void setMingci(int mingci) {
        this.mingci = mingci;
    }

    @Override
    public int compareTo(Student o) {
        return this.mingci - o.mingci;
    }
}

如果你要倒序,那么把
public int compareTo(Student o) {
return o.mingci - this.mingci;
}

    希望帮到你...

1,java里面有个对象比较,就是专门比较对象里某个属性值的,百度例子就ok。
2,比较大小,按照升序排列,for循环就行。
3,结束。

图片说明冒泡排序

public class Student implements Comparable{

private double score;

public double getScore() {
    return score;
}

public void setScore(double score) {
    this.score = score;
}

@Override
public int compareTo(Student o) {
    if(o.getScore() == this.score) {
        return 0;
    }else if(o.getScore() > this.score) {
        return -1;
    }else {
        return 1;
    }
}

}

图片说明
图片说明
图片说明

对分数比较后,进行排序就好了,,

public class Student implements Comparable{

private double score;
private String name;
private int rank;

public double getScore() {
    return score;
}

public void setScore(double score) {
    this.score = score;
}


public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}



public int getRank() {
    return rank;
}

public void setRank(int rank) {
    this.rank = rank;
}

public Student(String name, double score, int rank) {
    this.name = name;
    this.score = score;
    this.rank = rank;
}

@Override
public int compareTo(Student o) {
    if(o.getRank() == this.rank) {
        return 0;
    }else if(o.getRank() > this.rank) {
        return -1;
    }else {
        return 1;
    }
}

}

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class StudentSortTest {

public static void main(String[] args) {
    Student s1 = new Student("张三", 100, 1);
    Student s2 = new Student("李四", 99,3);
    Student s3 = new Student("王五", 80,2);

    List<Student> lists = new ArrayList<>();
    lists.add(s1);
    lists.add(s2);
    lists.add(s3);

    Collections.sort(lists);

    for(Student s : lists) {
        System.out.println(s.getName() + " :第" + s.getRank() + "名");
    }

}

}

遍历,比较第三个的大小

集合排序显然强烈推荐Java8的Stream来处理噻...简单方便...没那么多要求...想怎么排就怎么排,代码还简洁易懂

 public static void main(String[] args) {
        List<Student> ts = new ArrayList<>();
        ts.add(new Student("张三", 12, 3));
        ts.add(new Student("张三2", 12, 3));
        ts.add(new Student("张三3", 10, 4));
        ts.add(new Student("张三4", 95, 1));
        ts.add(new Student("张三5", 56, 2));

                // 默认顺序就是升序了
        ts = ts.stream().sorted(Comparator.comparing(Student::getRanking)).collect(Collectors.toList());

                // 想降序排也简单...加个reversed()的就降序了...
                ts = ts.stream().sorted(Comparator.comparing(Student::getRanking).reversed()).collect(Collectors.toList());
    }