文档章节

善用泛型数组

涂孟超
 涂孟超
发布于 2014/09/26 15:32
字数 295
阅读 10
收藏 0

用了一周的时间解决了一个难题; 同时第一次真正开始使用泛型数组, 感觉太好了.

如用 TArray<Word> 代替 array of Word, 还可以使用 TArray 类提供的算法(就是少了点).

uses Generics.Collections, Generics.Defaults;

{测试 TArray 的 Sort 方法}
procedure TForm1.Button1Click(Sender: TObject);
var
  arr: TArray<string>; //同 array of string
  s: string;
begin
  SetLength(arr, 5);
  arr[0] := 'aaa';
  arr[1] := 'AAA';
  arr[2] := '111';
  arr[3] := '333';
  arr[4] := '222';

  TArray.Sort<string>(arr);
  Memo1.Clear;
  for s in arr do Memo1.Lines.Add(s); //111 222 333 AAA aaa
end;

{测试 TArray 的 BinarySearch 方法}
procedure TForm1.Button2Click(Sender: TObject);
var
  arr: TArray<Integer>; //同 array of Integer
  i,n: Integer;
begin
  SetLength(arr, 5);
  for i := 0 to Length(arr) - 1 do arr[i] := Integer(Sqr(i));
  Memo1.Clear;
  for i := Low(arr) to High(arr) do Memo1.Lines.Add(IntToStr(arr[i]));

  if TArray.BinarySearch<Integer>(arr, 4, n) then ShowMessage(IntToStr(n)); //2, 也就是第三个

  if TArray.BinarySearch<Integer>(arr, 5, n) then ShowMessage(IntToStr(n)); //找不到时, 不能根据 n 的值判断
end;

{自定义排序器}
procedure TForm1.Button3Click(Sender: TObject);
var
  arr: TArray<Integer>;
  num: Integer;
begin
  SetLength(arr, 5);
  arr[0] := 2;
  arr[1] := 4;
  arr[2] := 3;
  arr[3] := 1;
  arr[4] := 5;

  TArray.Sort<Integer>(arr, TComparer<Integer>.Construct(
    function (const a,b: Integer): Integer
    begin
      Result := b - a;
    end
  ));
  Memo1.Clear;
  for num in arr do Memo1.Lines.Add(IntToStr(num)); //5 4 3 2 1
end;

本文转载自:http://www.cnblogs.com/del/archive/2011/05/27/2060187.html

涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
《Java编程思想》第四版读书笔记 第十五章 泛型

15.4 泛型方法 除了将泛型应用于整个类,还可以在类中包含泛型化方法,而这个方法所在的类可以是泛型类也可以不是泛型类。 作者推荐的一个基本指导原则:无论何时,只要能做到,就应该尽量使...

一万
2016/06/27
156
0
6-Java常用工具类-集合排序

本节内容转载自菜鸟教程,泛型就是c++里的模板技术,没什么新鲜的: http://www.runoob.com/java/java-generics.html Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型...

天涯明月笙
2018/08/08
0
0
.NET Core CSharp初级篇 1-8泛型、逆变与协变

.NET Core CSharp初级篇 1-8 本节内容为泛型 为什么需要泛型 泛型是一个非常有趣的东西,他的出现对于减少代码复用率有了很大的帮助。比如说遇到两个模块的功能非常相似,只是一个是处理int...

WarrenRyan
07/28
0
0
Java 数组学习笔记

数组的简单认识 简单理解java数组,就是可以创建并组装它们,通过使用整型索引值访问它们的元素,并且它们的尺寸不能改变,这里的它们就是数组。 数组的特殊性 在java中有很多方式去持有对象...

恋空御月
2015/09/22
108
0
【05】Effective Java - 泛型

1、不要在新代码中使用原生态类型 List<String>的原生态类型就是List,即擦除了泛型信息。 使用泛型,可以不在编译时期发现类型不匹配错误。 List<String>是List的的一个子类型,但不是List<...

xixicat
2014/07/10
91
0

没有更多内容

加载失败,请刷新页面

加载更多

反射

类的加载 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化来实现对这个类进行初始化 加载: 将class文件读入内存, 并为之创建一个Class对象; 任何类...

凹凸凸
46分钟前
4
0
jQuery与Ajax的应用

jQuery与Ajax的应用 Ajax Ajax 即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术,异步交互,传输的数据为XML.是一种在无需重新加载...

cjy_lean
57分钟前
6
0
查漏补缺,JVM系列:(JVM内存组成及分配)

java内存组成介绍:堆(Heap)和非堆(Non-heap)内存 按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”...

小刀爱编程
59分钟前
5
0
Java实现哈希表

Java实现哈希表 基本概念 哈希表:Hash Table,也称为散列表。在待存放的数据中定义一个关键字k,通过一个映射关系f,将k映射到一个地址中,这个地址称为散列地址。之后查找该记录时,不用再...

盒饭加鸡腿
今天
5
0
透彻讲解:并发编程的优缺点

一直以来并发编程对于刚入行的小白来说总是觉得高深莫测,于是乎,就诞生了想写点东西记录下,以提升理解和堆并发编程的认知。为什么需要用的并发?凡事总有好坏两面,之间的trade-off是什么...

李红欧巴
今天
32
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部