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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Ranger 中级黑马   /  2014-3-21 13:07  /  1020 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Ranger 于 2014-3-21 18:10 编辑

import java.util.*;

class Data{
        //面对LinkedList,实现数据的先进先出
        //建立LinkedList对象
        public static final int DUILIE = 1;
        public static final int DUIZHAN = 2;
        
        LinkedList link = null;
        Data(){
                link = new LinkedList();
        }
        
        //对用户提供存储对象的方法
        public void add(Object o){
                //存储对象,调用的是linkedList的Add方法
                link.add(o);
        }
        //取出,先进的先出来
        public Object get(int x){
                if(x==1)
                return link.getFirst();
                else
                return link.getLast();
        }
        //提供方法,判断集合中是否还有对象被取出,方便用户使用循环
        public boolean isEmpty(){
                return !link.isEmpty();
        }
}

public class LinkedListTest {
        public static void main(String[] args) {
                Data d = new Data();
                d.add("abc1");
                d.add("abc2");
                d.add("abc3");
                d.add("abc4");
                while(d.isEmpty()){
                        System.out.println(d.get(Data.DUILIE));
                }
        }

}
为嘛我运行时死循环。。。

3 个回复

倒序浏览
你的get的方法有问题
import java.util.*;

class Data{
        //面对LinkedList,实现数据的先进先出
        //建立LinkedList对象
        public static final int DUILIE = 1;
        public static final int DUIZHAN = 2;
        
        LinkedList link = null;
        Data(){
                link = new LinkedList();
        }
        
        //对用户提供存储对象的方法
        public void add(Object o){
                //存储对象,调用的是linkedList的Add方法
                link.add(o);
        }
        //取出,先进的先出来
        public Object  get(int x){
                                return link.pollFirst();
        }
        //提供方法,判断集合中是否还有对象被取出,方便用户使用循环
        public boolean isEmpty(){
                return !link.isEmpty();
        }
}

public class Test {
        public static void main(String[] args) {
                Data d = new Data();
                d.add("abc1");
                d.add("abc2");
                d.add("abc3");
                d.add("abc4");
                while(d.isEmpty()){
                        System.out.println(d.get(Data.DUILIE));
                }
        }

}
运行结果:

abc1
abc2
abc3
abc4
回复 使用道具 举报
1.LinkedList 不是数组结构,所以你这个不是用数组来模拟的
2.getFirst()和getLast()只是返回并不删除。所以下面这段代码中的d.isEmpty()将永远为true。所以就死循环了。建议用pollFirst()和pollLast()
while(d.isEmpty()){
System.out.println(d.get(Data.DUILIE));
}

回复 使用道具 举报
了解了,谢了~~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马