黑马程序员技术交流社区
标题:
集合框架堆栈的问题
[打印本页]
作者:
李阳阳
时间:
2013-3-27 10:56
标题:
集合框架堆栈的问题
本帖最后由 李阳阳 于 2013-3-27 11:52 编辑
import java.util.*;
class DuiLie
{
private LinkedList link;
DuiLie()
{
link = new LinkedList();
}
public void myAdd(Object obj)
{
link.addFirst(obj);
}
public Object myGet()
{
return link.removeFirst(); //1.为什么这个地方不能用getFirst()方法啊
}
public boolean isNull()
{
return link.isEmpty();
}
}
class LinkedListTest
{
public static void main(String[] args)
{
DuiLie dl = new DuiLie();
dl.myAdd("java01");
dl.myAdd("java02");
dl.myAdd("java03");
dl.myAdd("java04");
sop(dl); //2.为什么打印出来的是地址值呢
while(!dl.isNull())
{
sop(dl.myGet());
}
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
复制代码
作者:
寇弘禄
时间:
2013-3-27 11:14
removeFirst(); 是取出并移除容器中的数据,getFirst();是取出不移除数据。
此程序中如果取出不移除数据的话,主函数中的while就是死循环,因为容器里一直有数据。
为什么打印地址值,因为DuiLie类只是一个普通的类,并不是集合的子类,所以直接打印出来的只是他在内存中的引用地址。
作者:
程宁宁
时间:
2013-3-27 11:15
第一个问题:
getFirst()方法是取到第一个元素,但是不会从list里移除,
那么每次执行都会取同一个值,那 sop(dl.myGet())的执行将一直执行下去.
第二个问题:
System.out.println(obj);默认等同于 System.out.println(obj.toString());
所以会是字符串的形式.
作者:
fighting
时间:
2013-3-27 11:20
首先第一个问题:那个地方不是不能用getFirst()方法,而是要看你实现怎样的功能,
你这里貌似要实现一个队列的入队、出队、判空的操作,队列的操作规则是先进先出,
如果你在myGet方法中使用getFirst()方法,每次得到的数据后,该数据仍然会保留在链表中
与队列的规则不符。
顺便说一下,你的myAdd与myGet实现有点冲突了,逻辑不太对哈,该看看链表的知识了
第二个问题是打印出地址了,显然是因为你没有重写DuiLie这个类的toString方法导致的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2