C#中的List集合中可以出现重复值吗

C#中的List集合中可以出现重复值吗,第1张

List集合可以出现重复值,List集合的特性如下:

1、List<T>类是 ArrayList 类的泛型等效类。该类使用大小可按需动态增加的数组实现 IList<T>泛型接口

2、List<T>类既使用相等比较器又使用排序比较器。

诸如 Contains、IndexOf、LastIndexOf 和 Remove 这样的方法对列表元素使用相等比较器。类型 T 的默认相等比较器按如下方式确定。如果类型 T 实现 IEquatable<T>泛型接口,则相等比较器为该接口的 Equals(T)方法;否则,默认相等比较器为 Object.Equals(Object)。

诸如 BinarySearch 和 Sort 这样的方法对列表元素使用排序比较器。类型 T 的默认比较器按如下方式确定。如果类型 T 实现 IComparable<T>泛型接口,则默认比较器为该接口的 CompareTo(T) 方法;否则,如果类型T 实现非泛型 IComparable 接口,则默认比较器为该接口的 CompareTo(Object) 方法。如果类型 T 没有实现其中任一个接口,则不存在默认比较器,并且必须显式提供比较器或比较委托。

3、List<T>不保证是排序的。在执行要求 List<T>已排序的 *** 作(例如 BinarySearch)之前,您必须对 List<T>进行排序。

4、可使用一个整数索引访问此集合中的元素。此集合中的索引从零开始。

5、List<T>接受 null 作为引用类型的有效值并且允许有重复的元素。

TStringList 可以放重复的元素,以下是测试示例代码:

procedure TForm1.Button1Click(Sender: TObject)

var

  lst: TStringList

  i: Integer

begin

  lst := TStringList.Create

  //首次

  for i := 1111 to 1121 do

  begin

    lst.Add(Format('item%d',[i]))

  end

  Memo1.Lines.Add('首次添加' + lst.Count.ToString())

  Memo1.Lines.AddStrings(lst)

  //重复

  for i := 1111 to 1121 do

  begin

    lst.Add(Format('item%d',[i]))

  end

  Memo1.Lines.Add('再次添加,当前条目总数为:' + lst.Count.ToString())

  Memo1.Lines.AddStrings(lst)

  lst.Free

end


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11960657.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存