黑马程序员技术交流社区
标题:
泛型限定的问题
[打印本页]
作者:
丁岩
时间:
2012-8-25 09:00
标题:
泛型限定的问题
本帖最后由 丁岩 于 2012-8-25 09:05 编辑
import java.util.*;
class People
{
private String name;
People(String name)
{
this.name=name;
}
public String getName()
{
return name;
}
}
class Workers extends People
{
private int age;
Workers(String name,int age)
{
super(name);
this.age=age;
}
public int getAge()
{
return age;
}
}
public class Gener7
{
public static void main(String[]args)
{
TreeSet<People> tr=new TreeSet<People>();
tr.add(new People("e"));
tr.add(new People("de"));
tr.add(new People("cde"));
tr.add(new People("bcde"));
TreeSet<Workers> wk=new TreeSet<Workers>();
wk.add(new Workers("ab",10));
wk.add(new Workers("bc",8));
wk.add(new Workers("cd",6));
wk.add(new Workers("ef",4));
prints(wk);
/* Iterator<People> it1=tr.iterator();
while(it1.hasNext())
{
System.out.println(it1.next().getName());
}
*/
}
public static void prints(Collection<? extends People> al)
{
Iterator<? extends People> it=al.iterator();
while(it.hasNext())
{
System.out.print(it.next().getName());
}
}
}
复制代码
不知道错在哪了
作者:
刘源
时间:
2012-8-25 10:55
class People
implements Comparable
{
private String name;
People(String name)
{
this.name=name;
}
public String getName()
{
return name;
}
public int compareTo(Object o) {
return 1;
}
}
红色部分是你要修改的部分,
因为你People是装入的TreeSet集合中,那么该类就必须具备比较性。
而让类具备比较性有2种方法:
第一种方式:让元素自身具备比较性。
元素需要实现Comparable接口,覆盖compareTo方法。
也种方式也成为元素的自然顺序,或者叫做默认顺序。
第二种排序方式。
当元素自身不具备比较性时,或者具备的比较性不是所需要的。
这时就需要让集合自身具备比较性。
在集合初始化时,就有了比较方式。
而我用的是第一种方法。
作者:
丁岩
时间:
2012-8-25 13:14
刘源 发表于 2012-8-25 10:55
class People implements Comparable
{
private String name;
:)谢谢,明白了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2