程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi 2009泛型容器單元(Generics.Collections)[1]: TList

Delphi 2009泛型容器單元(Generics.Collections)[1]: TList

編輯:Delphi

Delphi 2009 新增了泛型容器單元: Generics.Collections, 同時還有一個 Generics.Defaults 單元做支持.

Generics.Collections 包含了以下實用類:

TList<T>

TQueue<T>

TStack<T>

TDictionary<TKey,TValue>

TObjectList<T>

TObjectQueue<T>

TObjectStack<T>

TObjectDictionary<TKey,TValue>

有了以上泛型的容器, 恐怕 Classes.TList 和 Contnrs 單元下的 TObjectList 等系列容器也就只為兼容存在了.

Generics.Collections.TList<T> 既然是泛型的, 那肯定應該容得下字符串列表, 本例就依此測試吧.

如果你對泛型不了解, 應先看看: http://www.cnblogs.com/del/archive/2008/08/14/1268258.html

本例效果圖:

代碼文件:unit Unit1;
interface
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;
type
 TForm1 = class(TForm)
  Memo1: TMemo;
  Edit1: TEdit;
  Button1: TButton;
  Button2: TButton;
  Button3: TButton;
  Button4: TButton;
  Button5: TButton;
  Button6: TButton;
  Button7: TButton;
  Button8: TButton;
  Button9: TButton;
  Button10: TButton;
  procedure FormCreate(Sender: TObject);
  procedure FormDestroy(Sender: TObject);
  procedure Edit1Change(Sender: TObject);
  procedure Button1Click(Sender: TObject);
  procedure Button2Click(Sender: TObject);
  procedure Button3Click(Sender: TObject);
  procedure Button4Click(Sender: TObject);
  procedure Button5Click(Sender: TObject);
  procedure Button6Click(Sender: TObject);
  procedure Button7Click(Sender: TObject);
  procedure Button8Click(Sender: TObject);
  procedure Button9Click(Sender: TObject);
  procedure Button10Click(Sender: TObject);
 end;
var
 Form1: TForm1;
implementation
{$R *.dfm}
uses Generics.Collections; {Delphi 2009 新增的泛型容器單元}
var
 List: TList<string>; {定義一個泛型 TList 類, 這指定了要用於 string}
 str: string = 'Test';
{建立}
procedure TForm1.FormCreate(Sender: TObject);
begin
 List := TList<string>.Create;
 Memo1.Clear;
 Edit1.Text := str;
 Button1.Caption := Button1.Caption + ' 顯示';
 Button2.Caption := Button2.Caption + ' 添加';
 Button3.Caption := Button3.Caption + ' 插入';
 Button4.Caption := Button4.Caption + ' 刪除1';
 Button5.Caption := Button5.Caption + ' 刪除2';
 Button6.Caption := Button6.Caption + ' 查找';
 Button7.Caption := Button7.Caption + ' 排序';
 Button8.Caption := Button8.Caption + ' 翻轉';
 Button9.Caption := Button9.Caption + ' 清空';
 Button10.Caption := Button10.Caption + ' 添加數組';
end;
{釋放}
procedure TForm1.FormDestroy(Sender: TObject);
begin
 List.Free;
end;
procedure TForm1.Edit1Change(Sender: TObject);
begin
 if Edit1.Text <> '' then str := Edit1.Text;
end;
{顯示}
procedure TForm1.Button1Click(Sender: TObject);
var
 i: Integer;
begin
 Memo1.Clear;
 for i := 0 to List.Count - 1 do
  Memo1.Lines.Add(List[i]); {List[i] = List.Item[i]}
 Text := Format('當前總數: %d', [List.Count]);
end;
{添加}
procedure TForm1.Button2Click(Sender: TObject);
begin
 List.Add(str);
 Button1.Click; {刷新顯示}
end;
{插入, 譬如插入在最前面}
procedure TForm1.Button3Click(Sender: TObject);
begin
 List.Insert(0, str);
 Button1.Click;
end;
{根據序號刪除, 譬如刪除第一個數據}
procedure TForm1.Button4Click(Sender: TObject);
begin
 List.RemoveAt(0);
 Button1.Click;
end;
{根據內容刪除, 譬如刪除第一個數據}
procedure TForm1.Button5Click(Sender: TObject);
var
 s: string;
begin
 s := List[0];
 List.Remove(s);
 Button1.Click;
end;
{查找}
procedure TForm1.Button6Click(Sender: TObject);
var
 n: Integer;
begin
 n := List.IndexOf(str); {LastIndexOf 是從後面找; 也可用 List.Contains(str) 判斷是否包含 str}
 if n = -1 then
  ShowMessage('沒找到')
 else
  ShowMessageFmt('%s 是第 %d 個', [str, n+1]);
end;
{排序}
procedure TForm1.Button7Click(Sender: TObject);
begin
 List.Sort;
 Button1.Click;
end;
{翻轉}
procedure TForm1.Button8Click(Sender: TObject);
begin
 List.Reverse;
 Button1.Click;
end;
{清空}
procedure TForm1.Button9Click(Sender: TObject);
begin
 List.Clear;
 Button1.Click;
end;
{添加數組}
procedure TForm1.Button10Click(Sender: TObject);
const
 arr: array[0..2] of string = ('CodeGear', 'Delphi', '2009');
begin
 List.Add('Embarcadero');
 List.AddRange(arr);
 Button1.Click;
end;
end.

窗體文件:

object Form1: TForm1
 Left = 0
 Top = 0
 Caption = 'Form1'
 ClientHeight = 201
 ClientWidth = 349
 Color = clBtnFace
 Font.Charset = DEFAULT_CHARSET
 Font.Color = clWindowText
 Font.Height = -11
 Font.Name = 'Tahoma'
 Font.Style = []
 OldCreateOrder = False
 OnCreate = FormCreate
 OnDestroy = FormDestroy
 PixelsPerInch = 96
 TextHeight = 13
 object Memo1: TMemo
  Left = 0
  Top = 0
  Width = 121
  Height = 201
  Align = alLeft
  Lines.Strings = (
   'Memo1')
  ScrollBars = ssBoth
  TabOrder = 0
  ExplicitHeight = 206
 end
 object Button1: TButton
  Left = 136
  Top = 13
  Width = 81
  Height = 25
  Caption = 'Button1'
  TabOrder = 1
  OnClick = Button1Click
 end
 object Button2: TButton
  Left = 127
  Top = 44
  Width = 100
  Height = 25
  Caption = 'Button2'
  TabOrder = 2
  OnClick = Button2Click
 end
 object Button3: TButton
  Left = 127
  Top = 75
  Width = 100
  Height = 25
  Caption = 'Button3'
  TabOrder = 3
  OnClick = Button3Click
 end
 object Button4: TButton
  Left = 127
  Top = 106
  Width = 100
  Height = 25
  Caption = 'Button4'
  TabOrder = 4
  OnClick = Button4Click
 end
 object Button5: TButton
  Left = 127
  Top = 137
  Width = 100
  Height = 25
  Caption = 'Button5'
  TabOrder = 5
  OnClick = Button5Click
 end
 object Button6: TButton
  Left = 240
  Top = 44
  Width = 100
  Height = 25
  Caption = 'Button6'
  TabOrder = 6
  OnClick = Button6Click
 end
 object Button7: TButton
  Left = 240
  Top = 75
  Width = 100
  Height = 25
  Caption = 'Button7'
  TabOrder = 7
  OnClick = Button7Click
 end
 object Button8: TButton
  Left = 240
  Top = 106
  Width = 100
  Height = 25
  Caption = 'Button8'
  TabOrder = 8
  OnClick = Button8Click
 end
 object Button9: TButton
  Left = 240
  Top = 137
  Width = 100
  Height = 25
  Caption = 'Button9'
  TabOrder = 9
  OnClick = Button9Click
 end
 object Edit1: TEdit
  Left = 240
  Top = 15
  Width = 100
  Height = 21
  TabOrder = 10
  Text = 'Edit1'
  OnChange = Edit1Change
 end
 object Button10: TButton
  Left = 127
  Top = 168
  Width = 214
  Height = 25
  Caption = 'Button10'
  TabOrder = 11
  OnClick = Button10Click
 end
end

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved