这个JAVA程序为什么报错?需要怎么改?能调用sort方法?

wxmwzz2004 2009-07-11 08:49:11
package test.shangxuetang;

import java.util.Collections;
import java.util.LinkedList;
import java.util.List;

public class BasicContainer {
public static void main(String[] args) {
List list = new LinkedList();
list.add(new Name("wang","daren"));
list.add(new Name("wang","yaoqiang"));
list.add(new Name("li","chen"));
Collections.sort(list);
System.out.println(list);
}
}

class Name
{
private String firstName, lastName;

public Name(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}

public boolean equals(Object obj) {
if (obj instanceof Name) {
Name name = (Name) obj;
return (firstName.equals(name.firstName))
&& (lastName.equals(name.lastName));
}
return super.equals(obj);
}
}

运行时:
Exception in thread "main" java.lang.ClassCastException: test.shangxuetang.Name
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.sort(Unknown Source)
at java.util.Collections.sort(Unknown Source)
at test.shangxuetang.BasicContainer.main(BasicContainer.java:13)
...全文
98 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wxmwzz2004 2009-07-12
  • 打赏
  • 举报
回复
谢谢
sbje36 2009-07-12
  • 打赏
  • 举报
回复
上面的示例有点问题,你自己修正,参数是Object
sbje36 2009-07-12
  • 打赏
  • 举报
回复
类Name实现Comparable这个接口,并实现其中的int compareTo(Object obj)这个方法,这是一个对象间排序的依据,Collections.sort()是通过调用上面的 compareTo()方法完成排序的
int compareTo(Name name){
if(this.firstName>name.firstName) //通过对象的firstName属性进行排序
return 1 ;
else if (this.firstName==name.firstName)
return 0 ;
else return -1 ;
}
zjf0921 2009-07-11
  • 打赏
  • 举报
回复
是Collections.sort(list); 这句抱的错。
Name类没有继承可排序的接口。

23,404

社区成员

发帖
与我相关
我的任务
社区描述
Java 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧