compareto方法实现(java中compareto实现学生成绩排列)

本文目录
java中compareto实现学生成绩排列
***隐藏网址***
/link?url=2rAgZUjzEjnNl4fs35zYj7ccp6nxbBT3uIRhfkwUNpfvgRsMxBlB20Zyjmy7g9Tr_s83-IKIyEABYwOnZzLrqq
步骤:
1、主要是实现Comparable接口
2、重写compareTo方法
照着这:
public int compareTo (Student arg) {
if (id 》 arg.id)
return 1;
else if (id == arg.id)
return 0;
else
return -1;
}
这写,放到集合TreeSet里面的时候会自动比较,然后有序存储的!
代码中是怎么调用compareTo方法的
这种东西楼主看TreeSet的源码
TreeSet的底层实现其实是TreeMap在每次add的时候也就是调用TreeMap的put方法
这时如果有外部比较器Comparator的实现就会调用外部的Comparator的比较方法,
如果没有就会调用实现Comparable接口的类的compareTo方法
Set不允许有重复的元素,所以使用add()方法是,在方法内部会调用对象的compareTo方法以判断两个对象是否相等
排序的时候在比较两个对象时用compareTo方法.
import java.util.Arrays;
class AlohaPerson implements Comparable《AlohaPerson》 {
private String name;
AlohaPerson(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return name;
}
@Override
public int compareTo(AlohaPerson o) {
return this.name.compareTo(o.name);
}
}
public class Aloha {
public static void sort(AlohaPerson persons) {
// 用选择排序法排序
for (int i = 0; i 《 persons.length - 1; ++i) {
int k = i;
for (int j = k; j 《 persons.length; ++j) {
// 排序的时候在比较两个对象时用compareTo方法.
if (persons) 《 0) {
k = j;
}
}
if (k != i) {
AlohaPerson temp = persons;
persons;
persons = temp;
}
}
}
public static void main(String args) {
AlohaPerson persons = {
new AlohaPerson("Bob"),
new AlohaPerson("John"),
new AlohaPerson("Smith"),
new AlohaPerson("Alpha"),
new AlohaPerson("Beta")
};
System.out.println(Arrays.toString(persons));
sort(persons);
System.out.println(Arrays.toString(persons));
}
}
输出
要是还不能解决?
你来我们群里说吧
这里是开发者互相学习交流的
有大神
让他们给你解释你的疑问 q un号: 188168040
请问Java中如何用compareTo方法对集合进行排序啊
import java.util.*;
class Student implements Comparable
{
public String sName;
public Student()
{
}
public Student(String sName)
{
this.sName=sName;
}
public int compareTo(Object o)//重写compareTo方法
{
Student tempStudent=(Student)o;
String temp=tempStudent.sName;
return this.sName.compareTo(temp); //按字符串sName的顺序排列Student
}
public String toString()
{
return this.sName;
}
}
class fggg {
public static void main(String args)
{
TreeSet ts=new TreeSet();//插入Student对象时,会自动调用compareTo方法
ts.add(new Student("DD"));
ts.add(new Student("CC"));
ts.add(new Student("BB"));
System.out.println(ts);
}
}
Java 怎么用compareTo接口实现排序
package test;
public class Field implements Comparable《Field》 {
private String name;
private int age;
public Field() {
}
public Field(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public int compareTo(Field o) {
// 先按age排序
if (this.age 》 o.getAge()) {
return (this.age - o.getAge());
}
if (this.age 《 o.getAge()) {
return (this.age - o.getAge());
}
// 按name排序
if (this.name.compareTo(o.getName()) 》 0) {
return 1;
}
if (this.name.compareTo(o.getName()) 《 0) {
return -1;
}
return 0;
}
}

更多文章:
细胞之间的interaction(细胞间相互作用方式有什么 有什么区别)
2026年5月26日 18:45
powder是什么刷子(rt化妆刷怎么样Real Techniques化妆刷怎么样)
2025年5月28日 07:15
u16女足亚洲杯直播(女足亚洲杯半决赛时间直播什么平台能看)
2026年4月9日 20:45
excel教程进阶(小白学Excel之操作中的常用技巧-Excel学习网)
2026年4月22日 12:45
结构体数组交换位置(c语言编程:将一个数组中的值按逆序重新存放,例如,原来顺序为8,6,5,4,3,要求改为3,4,5)
2025年9月14日 12:00
哪些cms可以做小说站(Wordpress、Discuz、KingCMS、MediaWiki各适合建什么样的站)
2026年7月24日 05:30
countif是计算什么的(excel中countif函数的功能是什么)
2025年5月29日 21:15
html5可以用在哪些方面(html5可以用来干什么,应用于哪些领域发展前景如何)
2026年3月11日 15:30
什么不是数据库系统的特点(急求解答题目 :什么不是数据库系统阶段的特点等)
2025年7月23日 08:45
运算放大器权威指南第五版(单电源运放和双电源运放有什么区别)
2026年5月1日 20:15
函数图像生成器 网页(有没有一种软件,当你输入数学公式后,软件就可以生成相应的图形(平面的或三维的))
2026年5月26日 16:45
thinkphp后台模板(为什么在thinkphp中的模板里只显示html代码,如图)
2025年7月25日 16:45
webservice部署在服务器(如何部署java webservice)
2025年12月16日 21:15
decimal转换为int(C#中怎样将decimal转int)
2025年6月3日 04:30
java的graphics详解(Java的Graphics类应该怎么用)
2026年8月9日 23:00









