`

实例183 - 自定义非泛型栈结构

 
阅读更多

心法领悟183:不用泛型的问题。

  1. 为了获取适当的值,必须进行强制类型转换。因为在保存数据时使用了Object类型的数组,丢失了对象的实际类型。
  2. 第二,没有进行错误检查。这意味着可以向该栈中存入任何类型的对象,如InputStream等。当转换成String时会在系统运行时报错。
package com.mingrisoft.generic;

public class Stack {
    private Object[] container = new Object[10];
    private int index = 0;
    
    public void push(Object o) {
        if (index != container.length) {
            container[index++] = o;
        }
    }
    
    public Object pop() {
        if (index != -1) {
            return container[--index];
        }
        return null;
    }
    
    public boolean empty() {
        if (index == 0) {
            return true;
        } else {
            return false;
        }
    }
}

 

package com.mingrisoft.generic;

public class StackTest {
    public static void main(String[] args) {
        Stack 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((String) stack.pop());
        }
    }
}

 运行结果:

向栈中增加字符串:
视频学Java
细说Java
Java从入门到精通(第2版)
从栈中取出字符串:
Java从入门到精通(第2版)
细说Java
视频学Java

 

分享到:
评论

相关推荐

    实例185 - 使用泛型实现栈结构

    本实例185重点讲解了如何使用泛型来实现一个自定义的栈结构。下面将详细阐述泛型的概念、泛型栈的实现以及其在实际开发中的应用。 首先,泛型是Java 5引入的新特性,它的主要目的是提高代码的类型安全性,减少类型...

    数据结构-加入泛型的线性表、栈、队列

    在编程领域,数据结构是构建高效算法的基础,而线性表、栈和队列是最基本且重要的数据结构。本文将详细探讨如何在Java或C#等支持泛型的语言中,为JWList和JWArray类加入泛型支持,以实现更加灵活和强大的功能。 ...

    java使用泛型实现栈结构示例分享

    在Java中,虽然有内置的`java.util.Stack`类,但为了演示泛型的用法,我们将自定义一个泛型栈。 首先,我们创建一个名为`Stack`的类,它有一个私有的内部成员变量`container`,类型为`LinkedList<T>`,这里的`T`是...

    细细品味C#(泛型专题)

    - **泛型实例化**:当使用泛型类或方法时,需要指定具体的类型参数来实例化泛型。 - **3.2.2 获取泛型类型和使用相应的泛型版本替换 ArrayList** - **类型获取**:使用 `typeof(T)` 来获取泛型类型的信息。 - *...

    泛型编程小实例(以List为例)

    - **声明泛型类**:如自定义一个泛型栈`public class MyStack<T> { ... }`,`T`为类型参数,代表栈中元素的类型。 - **声明泛型接口**:如`public interface MyList<T> { ... }`,`T`为接口中方法使用的类型。 - ...

    泛型实例详解

    为了直观展示泛型的应用,我们以栈这一数据结构为例。传统的栈实现通常绑定于特定类型,如int或string,导致代码重复且缺乏灵活性。而使用泛型,我们能够定义一个通用的栈类`Stack<T>`,其中`T`代表任何类型。这意味...

    C#泛型学习

    考虑以下非泛型栈的实现: ```csharp public class Stack { private object[] m_item; public object Pop() { ... } public void Push(object item) { ... } public Stack(int i) { this.m_item = new ...

    泛型顺序队列和循环队列

    通过学习这个实例,你可以深入了解C#中队列数据结构的实现和应用,掌握泛型在数据结构中的运用,以及如何将不同数据结构(如队列和栈)结合起来解决实际问题。这对你在编程领域的深入理解和实践有着重要的作用。记得...

    C# 之泛型详解

    它还可以应用于集合类,如`List<T>`和`Dictionary, TValue>`,以及其他自定义的数据结构。通过泛型,这些类能够在运行时高效地处理值类型,避免装箱和拆箱操作带来的性能开销。对于引用类型,泛型提供了类型安全,...

    学习泛型语法1

    在本教程“学习泛型语法1”中,我们将深入探讨泛型的各个方面,包括如何定义泛型类、处理多个泛型参数、创建泛型Stack类、理解结构类泛型以及查看泛型在自定义类和接口中的应用。 首先,让我们从定义泛型类开始。...

    C# 2.0中泛型编程思想分析

    当创建泛型类的实例时,可以指定`T`的具体类型,例如`Stack<int>`表示一个只包含整数的栈,`Stack<string>`则表示只包含字符串的栈。 使用泛型的主要优点包括: 1. **类型安全**:泛型确保了在运行时不会发生类型...

    C#泛型详解

    假设我们需要实现一个栈(`Stack`)数据结构,用来存储不同类型的数据。最简单的实现可能如下所示: ```csharp public class Stack { private int[] m_items; public int Pop() { /* ... */ } public void Push...

    数据结构 栈的模板类线性表实现

    在C++中,模板类可以用来创建泛型数据结构,这意味着我们可以为任何类型的数据(如整型、浮点型、自定义对象等)创建栈。模板类的定义通常包括类型参数,例如`template <typename T>`,这里的`T`代表我们将使用的...

    Asp.net core2.0快速入门笔记(又名七日速成)

    - 自定义服务实例化后的操作。 - **泛型服务**: - 支持泛型类型的服务注册。 通过以上章节的学习,开发者可以快速掌握 ASP.NET Core 2.0 的核心概念和技术要点,从而能够高效地开发出高质量的应用程序。

    C#泛型集合

    在实际开发中,我们还可以使用泛型接口`IEnumerable<T>`和`IEnumerator<T>`来实现自定义的迭代器,这在处理复杂数据结构或实现算法时非常有用。 总的来说,C#泛型集合是编程中的重要工具,它使得我们能够高效地管理...

    Thinking In Java(中文第四版)

    综上所述,《Thinking in Java(中文第四版)》不仅是一本详尽的Java教程,而且通过丰富的实例、深入的理论讲解以及作者多年的经验积累,为读者提供了全方位的学习资源。无论是对于初学者还是具有一定基础的开发者而言...

    泛型编程与STL.rar

    STL(Standard Template Library,标准模板库)是C++的一个核心部分,它利用了泛型编程的优势,提供了高效且灵活的数据结构(如向量、列表、映射等)以及算法(如排序、查找、迭代等)。这个"泛型编程与STL.rar...

    java经典问答

    - 内存区域:堆、栈、方法区、本地方法栈和程序计数器。 3. **数据类型**: - 基本类型:如int、double、boolean等,它们的值在内存中直接存储。 - 引用类型:如类、接口、数组,它们在内存中存储的是对象的引用...

Global site tag (gtag.js) - Google Analytics