标签:
1. 请用LinkedList模拟栈数据结构的集合,并测试:
题目的意思是:
你自己的定义一个集合类,在这个集合类内部可以使用LinkedList模拟,使用LinkedList功能方法封装成自己的方法。
2. 代码解析:
(1)定义自己集合类MyStack,模拟栈数据结构( 先进后出 )
1 package cn.itcast_05; 2 3 import java.util.LinkedList; 4 5 /** 6 * 自定义的栈集合 7 * 8 * @author Mr He 9 * @version V1.0 10 */ 11 public class MyStack { 12 private LinkedList link; 13 14 public MyStack() { 15 link = new LinkedList(); 16 } 17 18 public void add(Object obj) { // 底层调用的是LinkedList的addFirst()方法,每次都在起始位置添加 19 link.addFirst(obj); 20 } 21 22 public Object get() { //底层调用的是LinkedList的removeFirst()方法,取出数据(弹栈),原来的集合中不再含有这个元素。 23 // return link.getFirst(); 24 return link.removeFirst(); 25 } 26 27 public boolean isEmpty() {//底层调用的是LinkedList的isEmpty()方法,判断集合内部数据是否为空 28 return link.isEmpty(); 29 } 30 }
(2)MyStack的测试:
1 package cn.itcast_05; 2 3 /* 4 * MyStack的测试 5 */ 6 public class MyStackDemo { 7 public static void main(String[] args) { 8 // 创建集合对象 9 MyStack ms = new MyStack(); 10 11 // 添加元素 12 ms.add("hello"); 13 ms.add("world"); 14 ms.add("java"); 15 16 // System.out.println(ms.get()); 17 // System.out.println(ms.get()); 18 // System.out.println(ms.get()); 19 // NoSuchElementException 栈数据结构获取的时候,它是弹栈(出栈),原来集合中数据会一个个清除(先进后出),遍历的时候要防止集合为空,加判断 20 // System.out.println(ms.get()); 21 22 while(!ms.isEmpty()){ 23 System.out.println(ms.get()); 24 } 25 } 26 }
运行效果如下:
Java基础知识强化之集合框架笔记29:使用LinkedList实现栈数据结构的集合代码(面试题)
标签:
原文地址:http://www.cnblogs.com/hebao0514/p/4855483.html