永发信息网

程序改错 关于容器

答案:2  悬赏:70  手机版
解决时间 2021-04-13 07:32
  • 提问者网友:未信
  • 2021-04-12 20:30

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;

class Person implements Comparable<Person>{
int age;
String fristname,lastname;
public Person(String frist,String last,int ag){
fristname=frist;
lastname=last;
age=ag;
}
public String toString(){
return fristname+" "+" "+lastname;
}
public int compareTo( Person o) {
if(this.age>o.age)
return 0;
else if(this.age<o.age)
return -1;
else
return 0;
}
}
public class Testcontain {



public static void main(String[] args) {
// TODO Auto-generated method stub
List<Person> con=new ArrayList<Person>();
con.add(new Person("f2","l2",25));
con.add(new Person("f1","l1",16));
con.add(new Person("f3","l3",19));
con.add(new Person("f4","l4",16));
System.out.println(con.size());
Object[] person=con.toArray();
Arrays.sort(person);//这个没实现按年龄排序
for(int i=0;i<person.length;i++)
System.out.println(person[i]);
Collections.sort(con);//这个也没实现 为什么呀 怎么回事
System.out.println(Arrays.binarySearch(person,new Person("f2","l2",25) ));
System.out.println(con);
}

}

最佳答案
  • 五星知识达人网友:笑迎怀羞
  • 2021-04-12 22:05

你的compareTo重写的有问题,


if(this.age>o.age)
return 0;



应该是return 1;



不能有2种情况返回的值是一样的,不然比较器无法比较!

全部回答
  • 1楼网友:北城痞子
  • 2021-04-12 22:25

实现comparable接口

public String toString() { return firstname +" "+lastname+“ +age; } }

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯