黑马程序员技术交流社区
标题:
关于逻辑if else的疑问
[打印本页]
作者:
江大海
时间:
2013-5-21 19:06
标题:
关于逻辑if else的疑问
就是在TreeSet中,复写Comparable接口中的compareTo方法时
关于this.age 和传进来比较的stu.age之间的逻辑关系
它们的关系不就是三种吗???纠结这个问题一天了,哈哈,钻牛角尖了
代码展示如下
--------------来自黑马云青年
/*
用TreeSet存储自定义对象
自定义对象为Student,按年龄排序,如果年龄和姓名一行,就视为同一个人
因为对象是自定义的,所以它不具备比较性,所以我们就要让它实现Comparable接口,让它具备比较性
再复写compareTo方法,确定是按什么排序的
*/
import java.util.*;
class Student implements Comparable
{
private String name;
private int age;
Student(String name,int age)
{
this.name = name;
this.age = age;
}
public String getName()
{
return this.name;
}
public int getAge()
{
return this.age;
}
public int compareTo(Object obj)
{
if(!(obj instanceof Student))
throw new RuntimeException("传入对象不一致");
Student stu = (Student)obj;
if (this.age>stu.age)//----------------问题在这一块
//this.age 和stu.age的关系不就是三个吗?除了stu不属于stu的情况
//可是为什么我的代码改成if(){} else if (){} else if(){}就说我没有返回值类型呢???
//我也知道这里的if满足了一个就return了,可是为什么我这样写不可以??
//一定要把最后面那句改成else才行
return 1;
if(this.age==stu.age)//这里加不加else都可以
{
return this.name.compareTo(stu.name);
}
else//这里为什么一定要把if去掉??把if去掉的逻辑是什么??
//我的逻辑就是this.age与stu.age有三种情况,大,小,等
{
return -1;
}
}
}
class TreeSetTest
{
public static void main(String[] args)
{
TreeSet ts = new TreeSet();
ts.add(new Student("张1",19));
ts.add(new Student("张2",12));
ts.add(new Student("张2",12));
ts.add(new Student("张3",13));
ts.add(new Student("张4",19));
Iterator it = ts.iterator();
while (it.hasNext())
{
Student s = (Student)it.next();
System.out.println(s.getName()+"-----"+s.getAge());
}
}
}
class MyComparator implements Comparator
{
public int compare(Object o1,Object o2)
{
Student s1 = (Student)o1;
Student s2 = (Student)o2;
int num = s1.getName().compareTo(s2.getName());
if (num==0)
{
return new Integer(s1.getAge()).compareTo(new Integer(s2.getAge()));
}
return num;
}
}
复制代码
作者:
袁梦希
时间:
2013-5-21 19:14
其实像这样的问题比较多,其实在论坛搜一搜就可以的了。为了自己的学习,认真提问,加油吧,相信你
作者:
袁梦希
时间:
2013-5-21 19:17
楼主想要表述什么问题,我有点没明白?可不可以再细说一下 this.age 和stu.age的关系不就是三个吗 不明白什么意思
作者:
Changer_s
时间:
2013-5-21 19:47
楼主问哈子,这个java代码怎么截取下来的呀?我都迷茫了很久,求解
作者:
江大海
时间:
2013-5-21 20:20
标题:
RE: 关于逻辑if else的疑问
袁梦希 发表于 2013-5-21 19:17
楼主想要表述什么问题,我有点没明白?可不可以再细说一下 this.age 和stu.age的关系不就是三个吗 不明白 ...
哈哈,比较尴尬,等下团长,一会和你说
作者:
曹睿翔
时间:
2013-5-22 23:21
问题解决就再次编辑更改问题类型,没有解决继续追问
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2