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());
}