1.利用已有集合构建一个泛型Stack

我们知道Stack的基本特性是:只能对其顶部的元素进行操作(先进后出)
下面我们利用泛型写一个泛型Stack,实现所有类型的push(弹入)和pop(弹出)

代码很简单:

public class Stack<T> {
    
    
    //嵌套一个Java已有的集合类LinkedList来实现Stack
    private LinkedList<T> container = new LinkedList<>();

    //弹入元素
    public void push(T t) {
    
    
        container.addFirst(t);
    }
    //弹出元素
    public T pop() {
    
    
        return container.removeFirst();
    }
    //判断栈容量是否为空
    public boolean empty() {
    
    
        return container.isEmpty();
    }
}

这个泛型类的实例可以用于存储所有引用类型的元素,并对其进行弹入和弹出操作,这体现了泛型的一个特性:面对类型编程。
上面的实现是通过简单的泛型类的组合构建的泛型类,实际上很多时候,这种方式的安全性要比纯底层构建泛型类高。
测试:

public class StackTest {
    
    
    public static void main(String[] args) {
    
    
        Stack<String> stack = new Stack<>();
        System.out.println("向栈中增加字符串:");
        System.out.println("Java大法");
        System.out.println("细说Java");
        System.out.println("Java从入门到精通(第2版)");
        stack.push("Java大法");
        stack.push("细说Java");
        stack.push("Java从入门到精通(第2版)");
        System.out.println("从栈中取出字符串:");
        while (!stack.empty()) {
    
    
            //删除栈中全部元素并进行输出
            System.out.println(stack.pop());
        }
    }
}

运行结果:
在这里插入图片描述

Guess you like

Origin blog.csdn.net/c1776167012/article/details/121647215