心法领悟183:不用泛型的问题。
- 为了获取适当的值,必须进行强制类型转换。因为在保存数据时使用了Object类型的数组,丢失了对象的实际类型。
- 第二,没有进行错误检查。这意味着可以向该栈中存入任何类型的对象,如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重点讲解了如何使用泛型来实现一个自定义的栈结构。下面将详细阐述泛型的概念、泛型栈的实现以及其在实际开发中的应用。 首先,泛型是Java 5引入的新特性,它的主要目的是提高代码的类型安全性,减少类型...
在编程领域,数据结构是构建高效算法的基础,而线性表、栈和队列是最基本且重要的数据结构。本文将详细探讨如何在Java或C#等支持泛型的语言中,为JWList和JWArray类加入泛型支持,以实现更加灵活和强大的功能。 ...
在Java中,虽然有内置的`java.util.Stack`类,但为了演示泛型的用法,我们将自定义一个泛型栈。 首先,我们创建一个名为`Stack`的类,它有一个私有的内部成员变量`container`,类型为`LinkedList<T>`,这里的`T`是...
- **泛型实例化**:当使用泛型类或方法时,需要指定具体的类型参数来实例化泛型。 - **3.2.2 获取泛型类型和使用相应的泛型版本替换 ArrayList** - **类型获取**:使用 `typeof(T)` 来获取泛型类型的信息。 - *...
- **声明泛型类**:如自定义一个泛型栈`public class MyStack<T> { ... }`,`T`为类型参数,代表栈中元素的类型。 - **声明泛型接口**:如`public interface MyList<T> { ... }`,`T`为接口中方法使用的类型。 - ...
为了直观展示泛型的应用,我们以栈这一数据结构为例。传统的栈实现通常绑定于特定类型,如int或string,导致代码重复且缺乏灵活性。而使用泛型,我们能够定义一个通用的栈类`Stack<T>`,其中`T`代表任何类型。这意味...
考虑以下非泛型栈的实现: ```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#中队列数据结构的实现和应用,掌握泛型在数据结构中的运用,以及如何将不同数据结构(如队列和栈)结合起来解决实际问题。这对你在编程领域的深入理解和实践有着重要的作用。记得...
它还可以应用于集合类,如`List<T>`和`Dictionary, TValue>`,以及其他自定义的数据结构。通过泛型,这些类能够在运行时高效地处理值类型,避免装箱和拆箱操作带来的性能开销。对于引用类型,泛型提供了类型安全,...
在本教程“学习泛型语法1”中,我们将深入探讨泛型的各个方面,包括如何定义泛型类、处理多个泛型参数、创建泛型Stack类、理解结构类泛型以及查看泛型在自定义类和接口中的应用。 首先,让我们从定义泛型类开始。...
当创建泛型类的实例时,可以指定`T`的具体类型,例如`Stack<int>`表示一个只包含整数的栈,`Stack<string>`则表示只包含字符串的栈。 使用泛型的主要优点包括: 1. **类型安全**:泛型确保了在运行时不会发生类型...
假设我们需要实现一个栈(`Stack`)数据结构,用来存储不同类型的数据。最简单的实现可能如下所示: ```csharp public class Stack { private int[] m_items; public int Pop() { /* ... */ } public void Push...
在C++中,模板类可以用来创建泛型数据结构,这意味着我们可以为任何类型的数据(如整型、浮点型、自定义对象等)创建栈。模板类的定义通常包括类型参数,例如`template <typename T>`,这里的`T`代表我们将使用的...
- 自定义服务实例化后的操作。 - **泛型服务**: - 支持泛型类型的服务注册。 通过以上章节的学习,开发者可以快速掌握 ASP.NET Core 2.0 的核心概念和技术要点,从而能够高效地开发出高质量的应用程序。
在实际开发中,我们还可以使用泛型接口`IEnumerable<T>`和`IEnumerator<T>`来实现自定义的迭代器,这在处理复杂数据结构或实现算法时非常有用。 总的来说,C#泛型集合是编程中的重要工具,它使得我们能够高效地管理...
综上所述,《Thinking in Java(中文第四版)》不仅是一本详尽的Java教程,而且通过丰富的实例、深入的理论讲解以及作者多年的经验积累,为读者提供了全方位的学习资源。无论是对于初学者还是具有一定基础的开发者而言...
STL(Standard Template Library,标准模板库)是C++的一个核心部分,它利用了泛型编程的优势,提供了高效且灵活的数据结构(如向量、列表、映射等)以及算法(如排序、查找、迭代等)。这个"泛型编程与STL.rar...
- 内存区域:堆、栈、方法区、本地方法栈和程序计数器。 3. **数据类型**: - 基本类型:如int、double、boolean等,它们的值在内存中直接存储。 - 引用类型:如类、接口、数组,它们在内存中存储的是对象的引用...