黑马程序员技术交流社区

标题: 自学求解。 [打印本页]

作者: 張帅    时间: 2013-9-17 09:04
标题: 自学求解。
本帖最后由 張帅 于 2013-9-18 07:38 编辑

使用LinkedList存入3个对象“java01”、“java02”、“java03”
要求:先进后出
import java.util.*;
class DuiLie
{
    private LinkedList link;
DuiLie()
{
    link = new LinkedList();
}
public void add(Object obj)
{
   link.addFirst(obj);//我存完后的顺序应该是 java03、java02、java01
}
public Objiect get()
{
     return link.removeFirst();//我取完的顺序应该是先java03,后02,最后01.。正好和存的顺序相反,觉得达到先进后出的应用了。
}
}
class LinkedListTest
{
    public static void main(String[] args)
  {
     DuiLie dl = new DuiLie();//建了对象。
     dl.add("java01");//存入数据
      dl.add("java02");
       dl.ass("java03");
    System.out.println(dl.get());//取出数据。。结果出来的打印出来的只有1个,程序还缺那一块?

}}

作者: 傻瓜一点红    时间: 2013-9-17 09:21
dl.ass("java03");这句是不是写错了,姑且不说那句,你这代码得到的当然只有最后存入的那个了,因为ublic Objiect get()
{
     return link.removeFirst();
}这句中的removeFirst()是删除掉第一个并返回第一个,你又没有用循环,当然只返回第一个了,你在主函数中用一个循环就能得到所有,且这样你之前存进去的都将删除
作者: 第一印象    时间: 2013-9-17 09:28
要打印的结果是三条,但是你只取出了1条,多条结果要打印需要迭代或者循环的,代码修改如下:

  1. public class Test {

  2.         public static void main(String[] args) throws IOException {
  3.                 DuiLie dl = new DuiLie();// 建了对象。
  4.                 dl.add("java01");// 存入数据
  5.                 dl.add("java02");
  6.                 dl.add("java03");
  7.                 int count = dl.getSize();
  8.                 while(count>0){
  9.                         System.out.println(dl.get());// 取出数据。。结果出来的打印出来的只有1个,程序还缺那一块?
  10.                         count--;
  11.                 }
  12.         }

  13. }

  14. class DuiLie {
  15.         private LinkedList link;

  16.         DuiLie() {
  17.                 link = new LinkedList();
  18.         }

  19.         public void add(Object obj) {
  20.                 link.addFirst(obj);// 我存完后的顺序应该是 java03、java02、java01
  21.         }

  22.         public Object get() {
  23.                 return link.removeFirst();// 我取完的顺序应该是先java03,后02,最后01.。正好和存的顺序相反,觉得达到先进后出的应用了。
  24.         }
  25.        
  26.         public int getSize(){
  27.                 return link.size();
  28.         }
  29.        
  30. }
复制代码

作者: jìng╮煜    时间: 2013-9-17 11:47
估计楼主还没有学到迭代器吗?
一次是正常.如沙发所说,   像你这样只能取第一个.
如果使用迭代器,便会都取出来
作者: yanglfree    时间: 2013-9-17 12:41
   System.out.println(dl.get());//取出数据。。结果出来的打印出来的只有1个,程序还缺那一块?

这句话又没用循环,当然只会取出一个啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2