A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Rancho_Gump 高级黑马   /  2012-12-7 15:52  /  1173 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张向辉 于 2012-12-8 13:34 编辑

import java.util.*;
class TreeSetDemo
{
public static void main(String[] args)
{
  //System.out.println("Hello World!");
  TreeSet<Person> ts= new TreeSet<Person>();
  ts.add(new Person("abc001",12));
  ts.add(new Person("abc002",14));
  ts.add(new Person("abc003",16));
  ts.add(new Person("abc004",17));
  Iterator t = ts.iterator();
  while(t.hasNext())
  {
    Person per = (Person)t.next();//此处为什么还得进行强转才能编译通过啊,我如果不加Person,便不能通过?迷茫了
    sop(per.getName());
  }
}
public static void sop(Object obj)
{
  System.out.println(obj);
}
}
class Person implements Comparable
{
String name;
int age;
Person(String name,int age)
{
  this.name=name;
  this.age=age;
}
public String getName()
{
  return this.name;
}
public int compareTo(Object obj)
{
  //return this.name.compareTo((Person)obj.name);
  if(!(obj instanceof Person))
   throw new RuntimeException();
  Person p=(Person)obj;
  if(this.age>p.age)
   return 1;
  if(this.age==p.age)
   return this.name.compareTo(p.name);
  return -1;
}
public int getAge()
{
  return age;
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------
Person per = (Person)t.next();//此处为什么还得进行强转才能编译通过啊,我如果不加Person,便不能通过?
不加Person的话得到是什么类型啊?

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

3 个回复

倒序浏览
Iterator 加泛型就可以了
回复 使用道具 举报
我也是一名新手,这个问题我也是花了好长时间才搞明白,这里Person per = (Person)t.next();因为迭代器没有定义泛型,默认的是返回的是Object类型,所以要强转成Person
回复 使用道具 举报
问题已经解决
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马