title: 快速列表

快速列表

快速列表按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边)。

快速列表宏观上是一个双向链表,微观为数组。相对于传统列表(List),避免了修改造成的大规模的数据迁移。

快速列表实现接口:IQuickList 所有示例中,TElementstring

构造快速列表

  1. var quicklist = new QuickList<TElement>();

函数原型
  1. QuickList(int fill = 128);
参数 描述
fill 每个结点中元素的最大数量

Count

获取列表元素的数量。

  1. var count = quicklist.Count;

函数原型
  1. int Count { get; };

Length

快速列表中的结点数量。

  1. var length = quicklist.Length;

函数原型
  1. int Length { get; };

Add

将元素插入到列表尾部(Push别名函数)。

  1. // [ "123" ]
  2. quicklist.Add("hello world");
  3. // [ "123", "hello world" ]

函数原型
  1. void Add(TElement element);;
参数 描述
element 需要添加的元素

Push

将元素插入到列表尾部。

  1. // [ "123" ]
  2. quicklist.Push("hello world");
  3. // [ "123", "hello world" ]

函数原型
  1. void Push(TElement element);
参数 描述
element 需要添加的元素

UnShift

将元素插入到列表头部。

  1. // [ "123" ]
  2. quicklist.UnShift("hello world");
  3. // [ "hello world", "123" ]

函数原型
  1. void UnShift(TElement element);
参数 描述
element 需要添加的元素

Pop

移除并返回列表的尾部元素。

  1. // [ "hello world", "123" ]
  2. var element = quicklist.Pop();
  3. // element : "123"
  4. // [ "hello world" ]

函数原型
  1. TElement Pop();

Shift

移除并返回列表头部的元素。

  1. // [ "hello world", "123" ]
  2. var element = quicklist.Shift();
  3. // element : "hello world"
  4. // [ "123" ]

函数原型
  1. TElement Shift();

Trim

对列表进行修剪,只保留下标范围内的元素。

  1. // [ "1", "2", "3", "4", "5" ]
  2. var count = quicklist.Trim(1, 3);
  3. // count: 2
  4. // [ "2", "3", "4" ]

函数原型
  1. int Trim(int start, int end);
参数 描述
start 起始下标(包含),0为底
end 结束下标(包含)

Remove

移除指定的元素,如果给定了count那么则移除不多于count的指定元素。返回值为实际移除的元素数量

  1. // [ "a", "b", "a", "b", "a" ]
  2. var num = quicklist.Remove("a", 2);
  3. // num : 2
  4. // [ "b", "b", "a" ]
  1. // [ "a", "b", "a", "b", "a" ]
  2. var num = quicklist.Remove("a", -2);
  3. // num : 2
  4. // [ "a", "b", "b" ]

函数原型
  1. int Remove(TElement element, int count = 0);
参数 描述
element 规定元素
count 移除的数量,为0则移除全部元素,正数则从表头搜索,负数从表尾搜索

GetRange

获取区间内的所有元素。

  1. // [ "a", "a", "c", "d", "e"]
  2. var elements = quicklist.GetRange(1, 3);
  3. // elements: [ "a", "c", "d" ]

函数原型
  1. TElement[] GetRange(int start, int end);
参数 描述
start 起始位置(包含)
end 结束位置(包含)

this[int]

通过下标访问元素,如果传入的是一个负数下标那么从末尾开始查找。

  1. // [ "a", "b", "c", "d", "e"]
  2. var element = quicklist[2];
  3. // element : "c"

函数原型
  1. TElement this[int index] { get; set; }
参数 描述
index 下标,负数则从末尾查找。

InsertAfter

在指定元素之后插入。

  1. // [ "a", "b", "b", "c", "d" ]
  2. quicklist.InsertAfter("b", "abc");
  3. // [ "a", "b", "abc", "b", "c", "d" ]

函数原型
  1. void InsertAfter(TElement finder, TElement insert);
参数 描述
finder 查找的元素。
insert 插入的元素。

InsertBefore

在指定元素之前插入。

  1. // [ "a", "b", "b", "c", "d" ]
  2. quicklist.InsertAfter("b", "abc");
  3. // [ "a", ""abc"", "b", "b", "c", "d" ]

函数原型
  1. void InsertAfter(TElement finder, TElement insert);
参数 描述
finder 查找的元素。
insert 插入的元素。

ReverseIterator

反转迭代顺序(不是从物理上反转整个列表)

  1. // 物理顺序:[ 'a', "b", "c" ]
  2. // foreach迭代:[ 'a', "b", "c" ]
  3. quicklist.ReverseIterator();
  4. // 物理顺序:[ 'a', "b", "c" ]
  5. // foreach迭代:[ 'c', "b", "a" ]

函数原型
  1. void ReverseIterator();

Clear

清空快速列表。

  1. // [ "a", "b", "c" ]
  2. quicklist.Clear();
  3. // [ ]

函数原型
  1. void Clear();

First

获取第一个元素。

  1. // [ "a", "b", "c" ]
  2. var element = quicklist.First();
  3. // element : "a"
  4. // [ "a", "b", "c" ]

函数原型
  1. TElement First();

Last

获取最后一个元素。

  1. // [ "a", "b", "c" ]
  2. var element = quicklist.Last();
  3. // element : "c"
  4. // [ "a", "b", "c" ]

函数原型
  1. TElement Last();