Java代码帮忙看看帮忙解释下

来源:百度知道 编辑:UC知道 时间:2024/09/23 12:37:18
import java.util.Arrays;
class ArrayTest
{
public static void main(String[] args)
{
Student[] s = new Student[]{new Student(3,"wangjunhui"),new Student(1,"zhangsan"),new Student(2,"lisi"),new Student(3,"maliu")};
Arrays.sort(s);
for(int i=0;i<s.length;i++)
{
System.out.println(s[i]);
}
}
}
class Student implements Comparable
{
int num;
String name;
Student(int num,String name)
{
this.num=num;
this.name=name;
}
public String toString()
{
return "Number="+num+"Name="+name;
}
public int compareTo(Object o)
{
Student ss = (Student)o;——>>这句代码什么意思?为什么将o赋值给ss?这句代码可以不写吗?
index result = num > ss.num ? 1 :(num==ss.num ? 0 : -1);——>>num和ss.num一样吗?他们分别指的是什么?为什么不能这几写成 num=num?
if(0==result)——为什么常量放在前面?
{
result

首先~~你必须明白Arrays.sort()的作用
我解释下sort()是根据元素的自然顺序,对指定对象数组按升序进行排序。数组中的所有元素都必须实现 Comparable 接口。此外,数组中的所有元素都必须是可相互比较的(也就是说,对于数组中的任何 e1 和 e2 元素而言,e1.compareTo(e2) 不得抛出 ClassCastException)。
保证此排序是稳定的:不会因调用 sort 方法而对相等的元素进行重新排序。

该排序算法是一个经过修改的合并排序算法(其中,如果低子列表中的最高元素小于高子列表中的最低元素,则忽略合并)。此算法提供可保证的 n*log(n) 性能。n*log(n)指的是执行时间
该例子中
Student类实现了Comparable接口compareTo()是接口中指定的排序函数~~实现了这个函数sort()方法会自动去进行比较从而实现排序
为什么常量放在前面? ~~这只是习惯问题

name.compareTo(ss.name);这句调用的是String中的compareTo方法而不是Student类中的
Student ss = (Student)o;是对传入的对象o进行强制转化为Student类型转化的对象为ss,个人觉得可以不写
result = num > ss.num ? 1 :(num==ss.num ? 0 : -1)这句要从后面()之间的看起,如果this.num==ss.num的话返回0的值,否则返回-1,前面的意思是如果this.num大于ss.sum的话返回1,其他情况由后面的定也就是对Student对象根据num属性进行排序
学java的话~~我可以发给帮助文档给你~~~

Student ss = (Student)o;
把object类型o转型...为Student ,不转型你怎么比较.同型才好比较呀.

num和ss.num不一样...哪一个是this.num 后一个ss.num......两个num指两个不同对象的num...

if(0==result)——为什么常量放在