集合体系在Java中比较重要,整个集合体系是在JDK1.2版本后出现,Collection作为整个体系的顶层,拥有整个体系通用的功能。对于其下面的小弟,也是各有千秋。下面就一道面试题来看看LinkedList及Stack的特点。
  需求:用LinkedList模拟实现Stack的功能。
  分析:首先,要做这题要明白题目的意图,题目并不难,可是要没看懂题意做起来也不是件容易的事。这道题要求是让自定义一个集合来模拟出Stack类的功能。那问题又来了,Stack到底有什么特点呢?这就要求要对Stack类了解,Stack是栈,栈的特点就是先进后出,其方法有压栈、弹栈和判空。知道了这些,做这题就是水到渠成的事了,接下来看看代码体现。

 package cn.dolphin;

 import java.util.LinkedList;

 public class StackDemo {
public static void main(String[] args) {
//为了方便测试,这里就存储遍历String类型。
StackEnum<String> se = new StackEnum<>();
se.push("Hello");
se.push("Java");
se.push("World");
while(!se.empty()){
String string = se.pop();
System.out.println(string);
}
}
}
//定义泛型类,是因为并不确定自定义集合将来要存储什么类型元素。
class StackEnum<E>{
private LinkedList<E> linkedList = null;
public StackEnum(){
linkedList = new LinkedList<E>();
}
public E push(E e){
//压栈特点:后进的元素在栈顶,想想LinkedList中addFirst()方法。
linkedList.addFirst(e);//总在linkedList的开头添加元素。
return e;//返回添加的元素。
}
public E pop(){
//出栈特点:每次栈顶元素出栈。和LinkedList中removeFirst()方法对应。
return linkedList.removeFirst();//移除并返回linkedList的第一个元素。
}
public boolean empty(){
return linkedList.size() == 0;//判断linkedList的长度,用于遍历。
}
//当然Stack还有一个peek()方法,没有写出,有兴趣的筒子可以自己写写。
}

  这里再一次看到泛型在Java中的应用,所以知识是需要积累,如果没有前面泛型的支撑,这里就只能写特定的类型。

用LinkedList模拟Stack功能的更多相关文章

  1. 使用java.util.LinkedList模拟实现内存页面置换算法--LRU算法

    一,LRU算法介绍 LRU是内存分配中“离散分配方式”之分页存储管理方式中用到的一个算法.每个进程都有自己的页表,进程只将自己的一部分页面加载到内存的物理块中,当进程在运行过程中,发现某页面不在物理内 ...

  2. LinkedList、Stack、Queue、PriorityQueue的总结

    1.这几种容器的特点 都是按照顺序来存储元素. 取元素的时候的不同点: LinkedList:按照下标随意取元素 Stack:后进先出取元素 Queue:先进先出取元素 PriorityQueue:按 ...

  3. 使用LinkedList模拟一个堆栈或者队列数据结构

    使用LinkedList模拟一个堆栈或者队列数据结构. 堆栈:先进后出  如同一个杯子. 队列:先进先出  如同一个水管. import java.util.LinkedList; public cl ...

  4. java 16 - 5 LinkedList模拟栈数据结构的集合

    请用LinkedList模拟栈数据结构的集合,并测试 题目的意思是: 你自己的定义一个集合类,在这个集合类内部可以使用LinkedList模拟. package cn_LinkedList; impo ...

  5. java 16 -4 LinkedList的特有功能

    了解 LinkedList的特有功能: A:添加功能 public void addFirst(Object e) public void addLast(Object e) B:获取功能 publi ...

  6. javamail模拟邮箱功能发送电子邮件-基础实战篇(javamail API电子邮件实例)

    引言: JavaMail 是一种可选的.能用于读取.编写和发送电子消息的包 JavaMail jar包下载地址:http://java.sun.com/products/javamail/downlo ...

  7. javamail模拟邮箱功能发送电子邮件-中级实战篇【新增附件发送方法】(javamail API电子邮件实例)

    引言: JavaMail jar包下载地址:http://java.sun.com/products/javamail/downloads/index.html 此篇是紧随上篇文章而封装出来的,阅读本 ...

  8. javamail模拟邮箱功能--邮件删除-中级实战篇【邮件标记方法】(javamail API电子邮件实例)

    前言: JavaMail jar包下载地址:http://java.sun.com/products/javamail/downloads/index.html 本章可能是讲解javamail的最后一 ...

  9. Java基础知识强化之集合框架笔记26:LinkedList的特有功能

    1. LinkedList的特有功能: (1)添加功能  public  void  addFirst(Object   e)  public  void  addLast(Object   e) ( ...

随机推荐

  1. hdu 4544 湫湫系列故事——消灭兔子 优先队列+贪心

    将兔子的血量从小到大排序,箭的威力也从小到大排序, 对于每仅仅兔子将威力大于血量的箭增加队列,写个优先队列使得出来数位价钱最少.. #include<stdio.h> #include&l ...

  2. 显示解析svg

    g公司代码显示svg: SVGParserRenderer drawable = new SVGParserRenderer(context, String svgContent); String s ...

  3. m_Orchestrate learning system---九、在无法保证是否有图片的情况下,如何保证页面格式

    m_Orchestrate learning system---九.在无法保证是否有图片的情况下,如何保证页面格式 一.总结 一句话总结:都配上默认缩略图就可以解决了 1.如何获取页面get方式传过来 ...

  4. caffe中lenet_solver.prototxt配置文件注解

    caffe框架自带的例子mnist里有一个lenet_solver.prototxt文件,这个文件是具体的训练网络的引入文件,定义了CNN网络架构之外的一些基础参数,如总的迭代次数.测试间隔.基础学习 ...

  5. 用ksh运行一个helloworld

    本文目的在于记录和回顾.不建议当教程. Linux上没有ksh的话yum install ksh就可以了 直接上图 vim一个文件后缀名是ksh 内容是和shell差不多 然后赋予这个文件可执行权限 ...

  6. TabPage判断重复添加Page

    ..... ........ ...........代码如下: bool isPag = true; foreach (TabPage page in tbpDynamicMenu.TabPages) ...

  7. UVa 10801 Lift Hopping【floyd 】

    题意:给出n个电梯,每个电梯的运行时间,每个电梯只能在相应的楼层停靠,而且没有楼梯,再给出想去的楼层,问从0层能否到达想去的楼层,求到达的最短时间 建图还是没有建出来--- 因为n<100,可以 ...

  8. 全国所有省市县地理坐标Json格式

    https://www.cnblogs.com/yzbubble/p/7707129.html

  9. Django综合基础知识

    Django框架简介 MVC框架和MTV框架 MVC,全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View) ...

  10. UNIX系统高级编程——第五章-标准I/O库-总结

    基础: 标准I/O库在ANSI C中定义,可移植在不同的系统 文件指针(FILE):标准I/O库操作的不是文件描述符,而是流.FILE文件指针包含的是维护流所需的信息 通过函数fileno获取流的文件 ...