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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 窗外的雪儿飞   /  2015-8-28 23:20  /  2007 人查看  /  27 人回复  /   2 人收藏 转载请遵从CC协议 禁止商业使用本文

楼主太好了是个好银
回复 使用道具 举报
谢谢LZ,这样学习就有针对性了
回复 使用道具 举报
赞一个!!
回复 使用道具 举报
本帖最后由 窗外的雪儿飞 于 2015-9-12 11:32 编辑

集合类:请用LinkedList模拟栈数据结构的集合,并测试。
思路:首先定义自己的栈集合,底层用LinkedList类实现。
1、自定义栈集合
import java.util.LinkedList;
public class MyStack {
          private LinkedList link;
          public MyStack() {
                   link = new LinkedList();
          }

          public void add(Object obj) {
                  link.addFirst(obj);
           }

          public Object get() {
                 return link.removeFirst();
           }

          public boolean isEmpty() {
                  return link.isEmpty();
           }
}

2、测试
public class MyStackDemo {
        public static void main(String[] args) {
               MyStack my = new MyStack();
               my.add("hello");
               my.add("world");
               my.add("java");
               while (!my.isEmpty()) {
                        System.out.println(my.get());
                }
         }
}
回复 使用道具 举报
本帖最后由 窗外的雪儿飞 于 2015-9-12 11:32 编辑

Q: 用迭代器遍历集合的时候,用集合修改集合有没有问题?如果有,怎么解决?

A:有,会出现ConcurrentModificationException:并发修改异常。
      出现的原因:迭代器是依赖于集合而存在的。我们在通过迭代器迭代的过程中,用集合往集合中添加了元素,而并没有重新获取迭代器,所以会报错。
      解决方案:
                     A:用集合本身遍历集合,用集合去修改集合。 集合实现,元素添加到末尾。
                     B:用迭代器迭代,用迭代器修改元素。 迭代器实现,遍历到哪里,添加到哪里。
     代码体现:(PS:只是简单的代码而已,复杂的不演示)
public class ListIteratorDemo {
     public static void main(String[] args) {
          List list = new ArrayList();
          list.add("a");
          list.add("b");
          list.add("c");
  //1、用集合实现
          for (int x = 0; x < list.size(); x++) {
                  String s = (String) list.get(x);
                        if ("b".equals(s)) {
                               list.add("d");
                         }
            }
  //2、 用迭代器实现
           ListIterator lit = list.listIterator();
           while (lit.hasNext()) {
                  String s = (String) lit.next();
                  if (list.contains("b")) {
                         lit.add("d");
                   }
            }
            System.out.println("list:" + list);
      }
}
回复 使用道具 举报
ZZBY 中级黑马 2015-9-12 00:45:55
26#
是进入就业班的考试题吗
回复 使用道具 举报
给力,赞      
回复 使用道具 举报
Java_EE 来自手机 中级黑马 2015-9-12 07:52:13
28#
谢谢楼主的分享
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 加入黑马