TQueue 和 TStack, 一个是队列列表, 一个是堆栈列表; 一个是先进先出, 一个是先进后出. TStack 主要有三个方法.一个属性:Push(压栈).Pop(出栈).Peek(查看下一个要出栈的元素);Count(元素总数). 本例效果图: 代码文件: unit Unit1; interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,   Dialogs, S…
TQueue 和 TStack, 一个是队列列表, 一个是堆栈列表; 一个是先进先出, 一个是先进后出. TQueue 主要有三个方法.一个属性:Enqueue(入列).Dequeue(出列).Peek(查看下一个要出列的元素);Count(元素总数). 本例效果图: 代码文件: unit Unit1; interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,   Dia…
Delphi 2009 新增了泛型容器单元: Generics.Collections, 同时还有一个 Generics.Defaults 单元做支持. Generics.Collections 包含了以下实用类:TList<T>TQueue<T>TStack<T>TDictionary<TKey,TValue>TObjectList<T>TObjectQueue<T>TObjectStack<T>TObjectDicti…
我以前都是学出c,c++,这个学期开始学c#有点不适应,在编程中遇到些问题,所以自己在网上查了些资料,翻了一下书,写一些总结. 关于c#中Stack<T>泛型容器: <1>stack,是一种数据结构——栈,是一种操作受到限制的线性表,只能在一端插入和删除,FILO(first input Last Output)或LIFO(last input first Output) 我们不用去管它在编译器中是采用什么样的存储结构. <2>泛型容器:泛型类和泛型方法兼复用性.类型安…
这一章节我们继续类型擦除的话题,我们将通过对照数组与泛型容器,观察类型擦除给泛型容器带来什么问题? 1.数组 package com.ray.ch13; public class Test { public static void main(String[] args) { Fruit[] fruits = new Apple[5]; fruits[0] = new Apple(); fruits[1] = new Fuji(); fruits[2] = new Fruit(); } } cla…
一.前言    java中对泛型(集合类型)排序的问题,主要采用了两张方式一种是对要排序的实体类,实现Comparable接口,另一种方式,Collections集合工具类进行排序. 二.实现Comparable接口方式 package com.shine.demo.test; import java.io.Serializable; public class Car implements Serializable, Comparable<Car> { /** * 序列化版本. */ priv…
.Net为我们提供了众多的泛型集合.比如,Stack<T>先进后出,Queue<T>先进先出,List<T>集合元素可排序,支持索引,LinkedList<T>,双向链表的泛型实现,不支持索引;ISet<T>不允许被复制,他有2个实现,一个是HashSet<T>,不维持集合元素的排序,另一个是SortedSet<T>,支持集合元素的排序;IDictionary<TKey, TValue>是一个字典集合的泛型接口…
列表容器主要用于存放链表,其中的链表是双向链表,可以从任意一端开始遍历.列表容器是需要按顺序访问的容器.另外,列表容器不支持随机访问迭代器,因此某些算法不能适合于列表容器.列表容器还提供了另一种操作---拼接(splicing),其作用是将一个序列中的元素插入到另一个序列中.其头文件为<list> 1.列表容器的构造函数 4种形式的构造函数: list();//构造size()为0的列表容器 list(sizt_type n,const T& v=T());//初始化一个大小为n的列表…
Delphi 2010 中的泛型 2010已发布很长时间了,口碑还不错,准备用它开发下一项目,但对泛型等新东西的认识还不够,就搜了一下,发现下面这篇文章,还不错,大家一起补补课吧! C++中的模板.C#等语言中泛型技术,给许多操作不同类型数据的软件人员提供了一个很好的方法.其类型的“可变”性,让许多用过的软件人员所心喜.但是在Delphi 2009以前的版本中,是从来没有的.让许多不会用Delphi中TList的人员,大大的抱怨.如果用好Delphi中TList,其可用性,我个人认为,比其它语言…
(该博文为原创,转载请注明出处   http://www.cnblogs.com/luyijoy/  by白手伊凡) 1.    基本概念 1)         Java为解释性语言,运行过程:程序源代码经过Java编译器编译成字节码,然后用JVM解释执行 2)         Java语言提供垃圾回收机制(GC),不需要程序显式地管理内存分配,引入finalize()方法会在回收前首先调用 3)         main是JVM程序识别的入口方法,public.static可互换顺序,main…
近日没啥事情,研究了一下 everything.光速搜索原理.花了一个礼拜时间,终于搞定. 废话不多说,直接上代码: unit uMFTSearchFile; { dbyoung@sina.com 2018-04-23 } interface uses Windows, System.Classes, Generics.Collections; { 获取磁盘所有文件列表 } function GetLogicalDiskAllFiles(const chrLogiclDiskName: Char…
一. 引子 一般的类和方法.仅仅能使用详细类型:要么是基本类型.要么是自己定义类型.假设要编写能够应用于多种类型的代码,这样的刻板的限制对代码的束缚就会非常大. 多态算是一种泛化机制,但对代码的约束还是太强(要么继承父类.要么实现接口). 有很多原因促成了泛型的出现.而最引人注目的一个原因,就是为了创造容器类. (泛型的主要目的之中的一个就是用来指定容器要持有什么类型的对象,而且由编译器来保证类型的正确性) 比如,在 Java 实现加入泛型前.ArrayList 仅仅维护一个 Object 类型…
1. array是一个固定长度的,如果要动态的存储的话就不行了,虽然 System.Collections.ArrayList(),是一个动态的存储的容器,但是没有对存储中的数据进行一个约束,所以非泛型的容器和泛型 的容器相比存在两个问题:                          1.性能问题:                          2.安全问题:================================================================…
写在之前 我们都知道 Python 中内置了许多标准的数据结构,比如列表,元组,字典等.与此同时标准库还提供了一些额外的数据结构,我们可以基于它们创建所需的新数据结构. Python 附带了一个「容器」模块 collections,它包含了很多的容器数据类型,今天我们来讨论其中几个常用的容器数据类型,掌握了这几个可以减少我们重复造轮子所带来的烦扰. namedtuple 相信你已经熟悉了元组,一个元组相当于一个不可变的列表,你可以存储一个数据的序列.这里要说的 namedtuple(命名元组)和…
1. collections容器数据类型 collections模块包含除内置类型list.dict和tuple以外的其他容器数据类型. 1.1 ChainMap搜索多个字典 ChainMap类管理一个字典序列,并按其出现的顺序搜索以查找与键关联的值.ChainMap提供了一个很多的“上下文”容器,因为可以把它看作一个栈,栈增长时发生变更,栈收缩时这些变更被丢弃. 1.1.1 访问值 ChainMap支持与常规字典相同的api来访问现有的值. import collections a = {'a…
TArray TEnumerator(抽象) TEnumerable(抽象) 实际使用:TList TQueue TStack TPair TDictionary ,内部都包含 TValueEnumerator碰到对象:TObjectList TObjectQueue TObjectStack TObjectDictionary 另外haiy:TThreadedQueue 比如以前Delphi没有integer list,用泛型,我们可以这样声明: varlist: TList<Integer>…
delphi 泛型 System.Generics.Collections.pas TList<T> http://docwiki.embarcadero.com/Libraries/Berlin/en/System.Generics.Collections.TListhttp://docwiki.embarcadero.com/CodeExamples/Berlin/en/Generics_Collections_TList_(Delphi)http://docwiki.embarcader…
Dephi泛型generic的应用   泛型在C++, C#中已有广泛应用,Delphi自2009版本也引入泛型,典型的应用如TList,TDictionary.如果你熟悉C#,其用法十分类似. 比如以前Delphi没有integer list,用泛型,我们可以这样声明: var list: TList<Integer>; begin list := TList<Integer>.Create; list.Add(1); list.Add(2); list.Add(3); list…
泛型(generic)是C#语言2.0和通用语言运行时(CLR)的一个新特性.泛型为.NET框架引入了类型参数(type parameters)的概念.类型参数使得设计类和方法时,不必确定一个或多个具体参数,其的具体参数可延迟到客户代码中声明.实现.这意味着使用泛型的类型参数T,写一个类MyList<T>,客户代码可以这样调用:MyList<int>, MyList<string>或 MyList<MyClass>.这避免了运行时类型转换或装箱操作的代价和风…
要引用单元 System.Generics.Collections implementation {$R *.dfm}var i: Integer; str: string; procedure TForm1.btn2Click(Sender: TObject);var List: TList<Integer>;begin List := TList<Integer>.Create(); List.AddRange([11, 22, 33]); str := ''; for i i…
C#中的泛型 泛型(generic)是C#语言2.0和通用语言运行时(CLR)的一个新特性.泛型为.NET框架引入了类型参数(type parameters)的概念.类型参数使得设计类和方法时,不必确定一个或多个具体参数,其的具体参数可延迟到客户代码中声明.实现.这意味着使用泛型的类型参数T,写一个类MyList<T>,客户代码可以这样调用:MyList<int>, MyList<string>或 MyList<MyClass>.这避免了运行时类型转换或装箱…
泛型(generic)是C#语言2.0和通用语言运行时(CLR)的一个新特性.泛型为.NET框架引入了类型参数(type parameters)的概念.类型参数使得设计类和方法时,不必确定一个或多个具体参数,其的具体参数可延迟到客户代码中声明.实现.这意味着使用泛型的类型参数T,写一个类MyList<T>,客户代码可以这样调用:MyList<int>, MyList<string>或 MyList<MyClass>.这避免了运行时类型转换或装箱操作的代价和风…
泛型(generic)是C#语言2.0和通用语言运行时(CLR)的一个新特性.泛型为.NET框架引入了类型参数(type parameters)的概念.类型参数使得设计类和方法时,不必确定一个或多个具体参数,其的具体参数可延迟到客户代码中声明.实现.这意味着使用泛型的类型参数T,写一个类MyList<T>,客户代码可以这样调用:MyList<int>, MyList<string>或 MyList<MyClass>.这避免了运行时类型转换或装箱操作的代价和风…
第六节: TList 与泛型   TList 是一个重要的容器,用途广泛,配合泛型,更是如虎添翼. 我们先来改进一下带泛型的 TList 基类,以便以后使用. 本例源码下载(delphi XE8版本): FooList.Zip   unit uFooList; interface uses   Generics.Collections; type     TFooList <T>= class(TList<T>)   private     procedure FreeAllIte…
前言 在C++的语言基础当中,除了物件导向.事件驱动的概念之外,模版设计(Template)也是非常重要的一环.然而,C++的开发人员能够善用模版设计的并不多.模版设计这个好物,一般还有一个名称,就是泛型 (Generic),这个好物在Delphi 2009 之后,也已经被加入到 Object Pascal里面了,只是我们实在很少用到它. 然而,江湖一点诀,说破没秘诀,大家对于泛型的少用,很多是因为不知道有这个功能,其次是知道有这个功能却不知道怎么使用. 所以,我们这一篇就来深入浅出的介绍一下『…
概述 一个集合,即collection,有时也被称为一个容器,是将多个元素聚集成一个单元的对象.Collections常被用来存储.检索.操纵聚集数据以及聚集数据间的通信.一般来说,Collections表示一组自然类群的数据项,比如一手扑克牌.一个信箱(由很多信件组成)或者电话簿(一组姓名到电话号码的映射). 如果你熟悉Java语言或者任何一门其他编程语言,你可能已经对Collections比较熟悉了. 什么是集合框架? 一个集合框架是一个统一的构架,用于表示和操纵集合.所有集合框架都包含下面…
结论: 做HashMap 映射 功能的时候 ,字典TDictionary 功能更强大,且效率更高,比如不仅仅可以存String,还可以存结构和类. TDictionary类是一个name,value容器,内部是哈希索引,所以对于数据查找非常高效. unit Unit5; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vc…
1.1 泛型概述 1.1.1 泛型广泛用于容器(collections) 1.1.2 命名空间System.Collections.Generic 1.2 泛型的优点. 以前类型的泛化(generalization)是靠类型与全局基类System.Object的相互转换来实现.. NET框架基础类库的ArrayList容器类,就是这种局限的一个例子.ArrayList是一个很方便的容器类,使用中无需更改就可以存储任何引用类型或值类型 1.3 泛型类型参数. 在泛型类型或泛型方法的定义中,类型参数…
1.1 理解什么是泛型 在.NET 2.0,可以成为革命性壮举的, 就是引入了激动人心的特性——泛型..NET泛型是CLR和高级语言共同支持的一种全新的结构,实现了一种将类型抽象化的通用处理方式.在泛型机制中,我们不再为特定的类型而编码,取而代之的是一种通用的编码方式,因此泛型本质上就是一种代码重用.这种代码重用并非面向对象中通过集成.集合.多态等方式实现:而是实现为一般化.可重用的算法抽象,但在执行效率上与执行特定类型相同. 1.2 理解泛型的优点 泛型增强了代码的可读性,将大量的安全检查从执…
数组和泛型容器有什么区别 要区分数组和泛型容器的功能,这里先要理解三个概念:协变性(covariance).逆变性(contravariance)和无关性(invariant). 若类A是类B的子类,则记作A ≦ B.设有变换f(),若: 当A ≦ B时,有f(A)≦ f(B),则称变换f()具有协变性: 当A ≦ B时,有f(B)≦ f(A),则称变换f()具有逆变性: 如果以上两者皆不成立,则称变换f()具有无关性. 在Java中,数组具有协变性,而泛型具有无关性,示例代码如下: Objec…