`
孙瑞鸿
  • 浏览: 17878 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

泛型,队列优化

阅读更多
一  泛型
1.为什么使用泛型:
      要用一个类型接收多个类时如:
       int x=2,y=3;
       float x=3.0,y=5.6;
       String x="aa",y="bb";
       可以使用Object接受任何类型的数据(发生向上转型),但由于Object可接受任何数据类型,
       当接受的和输出的类型不符时就会出错,因此使用泛型。
2.访问权限  class 类名<泛型标识符...>{ //泛型标识符可任意定义,可为多个     
访问权限  泛型标识符  变量名称;
访问权限  泛型标识符 方法名(){};
访问权限  泛型标识符 构造方法([泛型类型  参数名]){};
访问权限  返回值类型 方法名(泛型标识符 变量名){};
}
3.实例化该类时
类名<具体指定的类型> 对象名=new 类名<具体指定的类型>();
二  优化队列
1.使用数组时,长度是固定的,有时不够,有时浪费------>因此使用队列
2.但使用队列时有存在性能问题如下:

public class StList<E> {
	private Object[] srcA=new Object[0];
	public void add(E e){
		//新建一个数组,长度为原数组的长度加1
		Object[] destA=new Object[srcA.length+1];
		//将元素加到新数组的最后一个位置
		destA[srcA.length]=e;
		//将原数组中的数据放入新数组,使用系统提供的数组copy方法
		System.arraycopy(srcA, 0, destA, 0, srcA.length);
		//指向新建的数组
		srcA=destA;
	}
}	

3.这样的话没加一个元素都要将原数组长度加1,添加新元素,然后将原数组的数据放入新数组------>导致性能降低
为了解决这一问题引入全局变量
int initCount=10;//原数组初始长度
int increase=20;//新数组在原数组上的增幅
int count=0;//用来记数
	private Object[] srcA=new Object[initCount];
	public void add(E e){
		if(count<srcA.length){
			srcA[count++]=e;
		}else{
		Object[] destA=new Object[srcA.length+increase];
		destA[count++]=e;
		//将原数组中的数据放入新数组,使用系统提供的数组copy方法
		System.arraycopy(srcA, 0, destA, 0, srcA.length);
		//指向新建的数组
		srcA=destA;
		}
	}

4.这样做是性能提高,但操作死板。因此可以使用构造器将initCount,increase的值传入,这样用户可以自
定义数组原始长度和增幅。

public StList(){	
	}
	public StList(int initCount){
		this.initCount=initCount;
		increase=1;
	}
	public StList(int initCount,int increase){
		this.initCount=initCount;
		this.increase=increase;
	}



分享到:
评论

相关推荐

    支持多线程和泛型的阻塞队列

    阻塞队列是一种在多线程编程中广泛使用的并发数据结构,它在计算机科学和编程领域,特别是Java和C++等面向对象语言...在理解和使用时,需要理解其内部原理,合理选择队列容量,以及适当使用不同的操作方法来优化性能。

    C#泛型集合使用实例

    泛型队列遵循先进先出(FIFO)原则,使用`Enqueue`方法添加元素到队尾,`Dequeue`方法移除并返回队首元素。`Queue&lt;T&gt;`实现了`ICollection&lt;T&gt;`和`IEnumerable&lt;T&gt;`接口。 6. **泛型栈(Stack)** 栈遵循后进先出...

    C__泛型的运用

    - **Queue**、**Stack** 和 **SortedList, TValue&gt;**:这些集合分别对应于它们同名的非泛型版本,提供队列、栈和排序列表的功能。 #### 五、泛型示例 为了更好地理解泛型的用法,让我们看一个具体的示例。假设我们...

    泛型方法的使用.rar

    泛型是C#编程语言中的一个强大特性,它允许开发者创建可重用的...在实际开发中,无论是数据结构实现(如列表和队列)还是算法设计,都可以看到泛型方法的身影,它们在提升代码的灵活性和可维护性方面发挥着重要作用。

    C# 2.0中泛型编程初级入门教程.doc

    通过泛型,我们可以创建通用的数据结构,如集合和队列,而无需为每种可能的数据类型编写单独的实现。 在C#中,泛型的主要好处体现在以下几个方面: 1. **类型安全**:泛型提供了一种编译时的类型检查机制,确保了...

    C例子:队列(顺序存储方式)

    在本文中,我们将深入探讨C语言中的队列数据结构,以标题“C例子:队列(顺序存储方式)”为例,结合描述中的博客...同时,这也为扩展和优化队列提供了基础,例如实现线程安全的队列或者支持不同数据类型的泛型队列。

    使用C#泛型集合编写程序

    除了这些基本的泛型集合,C#还提供了其他泛型集合,如LinkedList(链表)、Stack(栈)、Queue(队列)等,它们各自对应不同的数据结构和算法需求。 在实际项目中,我们可以利用泛型集合来组织和管理数据。比如,你...

    大局观泛型程式设计与STL

    5. 特殊用途的STL组件:如stack(栈)、queue(队列)和priority_queue(优先队列)。 6. 自定义容器和算法:如何利用STL提供的基础设施开发自己的数据结构和算法。 7. STL与异常安全:理解STL在异常发生时的行为,...

    cpp-这是一个关于数据结构的C语言静态链接库支持泛型

    在C++中,泛型是通过模板实现的,可以创建不依赖特定类型的数据结构,如数组、队列、栈、链表等。在C语言中,由于没有内置的泛型机制,通常需要为每种数据类型编写单独的实现,这增加了代码重复和维护难度。该静态...

    Java1.5泛型指南中文版

    Java 1.5 引入了泛型(generics)这一强大的特性,旨在提升类型安全性,减少类型转换的烦恼,并优化代码的可读性。泛型允许我们在编程时指定容器(如列表、队列等)所容纳对象的类型,从而在编译阶段就能捕获类型...

    C# 中的 泛型 集合

    2. 性能优化:由于泛型集合内部可以避免装箱和拆箱操作,因此执行速度更快,内存消耗更少。 3. 代码复用:泛型集合可以用于存储任何类型的对象,减少了编写特定类型集合的需要,提高了代码的重用性。 三、泛型集合...

    java零基础自学 之 JAVA泛型

    在Java编程中,泛型是一种强大的特性,它允许我们在编写代码时指定容器(如列表、队列或映射)所容纳的数据类型。这为程序带来了更高的类型安全性和可读性,同时减少了运行时类型转换异常的可能性。本文将深入探讨...

    Delphi泛型库--DGL

    在DGL中,泛型主要体现在各种容器类和算法上,例如列表(List)、集合(Set)、映射(Map)和队列(Queue)等,它们都支持不同类型的元素,极大地提高了代码的灵活性和可维护性。 1. **泛型容器:** - **TList**:...

    c++实现的模板队列

    在C++编程语言中,模板队列是一种泛型数据结构,允许我们存储不同类型的元素,如整数、字符串、自定义对象等。本教程将深入探讨如何使用C++实现一个模板队列,以及其相关的重要知识点。 首先,我们需要了解队列的...

    c#实现队列(银行排队).zip

    C# .NET框架提供了一个名为`System.Collections.Generic.Queue&lt;T&gt;`的类,用于创建泛型队列。队列的主要操作包括: 1. **Enqueue()**:在队尾添加元素。 2. **Dequeue()**:从队头移除并返回元素,如果队列为空则抛...

    C++ primer 第十六章 泛型 实现自定义Queue 修改版

    "C++ primer 第十六章 泛型 实现自定义Queue 修改版"的主题主要围绕如何利用C++的模板机制来实现一个自定义的队列(Queue)容器。在实现过程中,可能会遇到模板编译错误,解决这些问题需要对C++的模板语法有深入的...

    一种抽象泛型机制的新型Java实现.zip

    7. **新型Java实现**:标题暗示了可能有一种新的泛型实现方式,可能是对现有泛型机制的优化、扩展或变体。这可能涉及到更高级的类型系统特性,如多重边界、类型推断增强或者针对特定场景的定制化泛型设计。 8. **...

    DGL1.27泛型库容器算法

    在DGL 1.27中,容器是一组数据组织结构,如数组、链表、队列、堆栈、集合、映射等。这些容器提供了对数据的存储和操作接口,使得程序员可以方便地管理数据。例如,`std::vector`是一个动态数组容器,支持快速随机...

    c++多线程安全的消息队列模板

    7. **优化策略**:在实际应用中,可能会考虑更多的优化策略,如使用超时等待、批量处理消息、优先级队列等,以适应不同的并发场景。 8. **总结**:C++多线程安全的消息队列模板是并发编程中的重要工具,它提供了...

Global site tag (gtag.js) - Google Analytics