黑马程序员技术交流社区
标题:
集合堆栈问题
[打印本页]
作者:
张丽
时间:
2012-10-6 19:58
标题:
集合堆栈问题
求助:自定义一个堆栈数据结构,用于存储Student类的对象,对象有年龄和姓名,然后将对象取出。
作者:
古银平
时间:
2012-10-6 20:16
本帖最后由 古银平 于 2012-10-6 20:23 编辑
package day18;
import java.util.*;
class Person
{
private String name;
private int age;
Person(String name,int age)
{
this.name = name;
this.age = age;
}
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
public int hashCode()
{
return name.hashCode()+age*29;
}
public int compareTo(Person s)
{
int num = new Integer(this.age).compareTo(new Integer(s.age));
if(num==0)
return this.name.compareTo(s.name);
return num;
}
public boolean equals(Object obj)
{
if(!(obj instanceof Person))
throw new ClassCastException("类型不匹配!");
Person s = (Person)obj;
return this.name.equals(s.name) && this.age==s.age;
}
public String toString()
{
return name+": :"+age;
}
}
class Duizhan
{
private LinkedList<Person> link; //这里用List接口的LinkedList类
Duizhan()
{
link=new LinkedList<Person>();
}
public void myAdd(Person p)
{
link.addFirst(p); //讲存进的元素都放在列表的开头
}
public Person myGet()
{
return link.removeFirst(); //取出第一个元素,最后存进去的就是起一个元素
}
public boolean isNull()
{
return link.isEmpty();
}
}
class DuizhanDemo {
public static void main(String[] args)
{
Duizhan dl = new Duizhan();
dl.myAdd(new Person("lisi1",20));
dl.myAdd(new Person("lisi2",23));
dl.myAdd(new Person("lisi3",21));
dl.myAdd(new Person("lisi4",22));
while(!(dl.isNull()))
{
System.out.println(dl.myGet());
}
}
}
堆栈就是先进后出,出来的结果是lisi4......lisi1,这我写的,你看看那把
复制代码
作者:
张丽
时间:
2012-10-7 17:02
lisi1::21
lisi2::22
lisi3::23
lisi4::24
我运行了,结果是这个,还是不对啊,年龄都没写24.纠结,好像该题也用不上hashCode()和equals()方法,还有compareTo()方法,LinkedList是有序的,就是怎么存进去,就按这个顺序取出来,我们写了myAdd()方法和myGet()方法在这个程序里好像没有操作对象数据。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2