@要求实现Comparable接口,按年龄比较两个的人大小
@要求实现Comparable接口,按年龄比较两个的人大小
##
代码自由写,主要是看实现接口里的compareTo(),和比较过程。
满意思给分。
##
请给出代码。谢谢
------解决方案--------------------我也是学生,第一次回贴,我试试看了:
import java.util.*;
public class PersonTest{
public static void main(String [] args){
Person[] staff=new Person[2];
staff[0]=new Person( "小明 ",30);
staff[1]=new Person( "小明 ",20);
Arrays.sort(staff);
for(Person e:staff)
System.out.println( "姓名: "+e.getname()+ "年龄: "+e.getage());
System.exit(0);
}
}
class Person implements Comparable <Person> {
public Person(String name,double age){
this.name=name;
this.age=age;
}
public String getname(){
return name;
}
public double getage(){
return age;
}
public int compareTo(Person other){
if(age <other.age) return -1;
if(age> other.age) return 1;
return 0;
}
private String name;
private double age;
}
------解决方案--------------------比如我有一个Person类,它的实例对象存储在ArrayList数组中,现在要把ArrayList数组中的Person对象按照年龄排序.
其实这种情况经常遇到.
下面给出源代码:
1:Person.java文件:-------------------------------
public class Person{
String name;
int age;
public Person(String name,int age){
this.name = name;
this.age = age;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
2:Mycomparator.java-------------------------------
//实现Comparator接口,也就是定义排序规则,你几乎可以定义任何规则
package com.infoearth;
import java.util.*;
public class Mycomparator implements Comparator{
public int compare(Object o1,Object o2) {
Person p1=(Person)o1;
Person p2=(Person)o2;
if(p1.age <p2.age)
return 1;
else
return 0;
}
}
3:ListSort.java------------------------------------
package com.infoearth;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class ListSort {
public static void main(String[] args){
ArrayList list = new ArrayList();
list.add(new Person( "lcl ",28));
list.add(new Person( "fx ",23));
list.add(new Person( "wqx ",29));
Comparator comp = new Mycomparator();
Collections.sort(list,comp);
for(int i = 0;i <list.size();i++){
Person p = (Person)list.get(i);
System.out.println(p.getName());
}
}
}
------解决方案--------------------自己的问题自己回答吧,我不知道第一个是不是问题,就从第二个问题开始回答
2.就是相当于for循环,会自动遍历所有数组。
3.这里是为Array.sort提供一种比较方式,实现compareTo方法;对年龄进行比较,第一个年龄小于第二个就返回-1,如果相等返回0,否则返回1;其中具体说明可以参看JDK1.5API
4.你也可以定义为public,这只是为以后考虑。
尽量说明的能让人理解,有错误请指正。