C#学习笔记 ----集合

List<T>是与数组相当的集合类。其他类型的集合:队列、栈、链表和字典。

IEnumerable<T>如果将foreach语句用于集合,就需要IEnumerable接口。这个接口定义了方法GetEnumerator(),它返回一个实现了IEnumerator接口的枚举。

ICollection<T>接口由泛型集合类实现。使用这个接口可以获得集合中的元素个数,把集合复制到数组中,还可以从集合中添加和删除元素。

IList<T>接口用于可通过位置访问其中的元素列表,这个接口定义了一个索引器,可以在集合的指定位置插入或删除某些项。List<T>接口派生自ICollection<T>接口。

IDictionary<TKey,TValue>接口包含键和值的泛型集合类实现。是用这个接口可以访问所有的键和值,使用键类型的索引器可以访问某些项,还可以添加或删除某些项。

IComparer<T>接口由比较器实现,通过Compare()方法给集合中的元素排序

.NET Framework为动态列表提供了泛型类List<T>。这个类实现了IList、ICollection、IEnumerable、IList<T>、ICollection<T>和IEnumerable<T>接口

创建列表 调用默认的构造函数,就可以创建列表对象

Capacity属性可以获取和设置集合的容量

集合初始值设定项给集合赋值

var intList = new List<int>() {1,2};
//添加元素
intList.Add(1);

使用List<T>类的AddRange()方法,可以一次给集合添加多个元素

//插入元素
racers.Insert(3,new Racer(6,"Phil","Hill","USA",3));

方法InsertRange()提供插入大量元素功能

//访问元素
//使用索引器
Racer rr = racers[3]

List<T>集合类实现了IEnumerable接口,所以可以使用foreach语句遍历

List<T>类还提供了ForEach()方法

//删除元素
racers.RemoveAt(3);

搜索 使用的方法IndexOf()、LastIndexOf()、FindIndex()、FindLastIndex()、Find()、FindLast()

排序 List<T>类可以使用Sort()方法对元素排序

只读集合 List<T>集合的AsReadOnly()方法返回ReadOnlyCollection<T>类型对象

队列 

以先进先出(FIFO)的方式来处理的集合

System.Collections.Generic名称空间中的泛型类Queue<T>实现

Queue<T>类的方法

Count属性返回队列中的元素个数

Enqueue()方法在队列一端添加一个元素

Dequeue()方法在队列的头部读取和删除一个元素

Peek()方法在队列的头部读取一个元素,但不删除它

TrimExcess()方法重新设置队列的容量

后进先出(LIFO)的容器

Statck<T>类

Count返回栈中的元素个数

Push()在栈顶添加一个元素

Pop()从栈顶删除一个元素,并返回该元素

Peek()返回栈顶的元素,但不删除它

Contains()确定某个元素是否在栈中,如果是,返回true

链表

链表不仅能在列表中存储元素。存储元素时,链表还必须存储每个元素存储下一个元素和上一个元素的信息。

这就是LinkedList<T>包含LinkedListNode<T>类型的元素的原因。

LinkedList<T>类定义的成员可以访问链表中的第一个和最后一个元素(First和Last)、在指定位置插入元素(AddAfter()、AddBefore()、AddFirst()、AddLast()方法)

,删除指定位置的元素(Remove()、RemoveFirst()和RemoveLast()方法)、从链表的开头(Find()方法)或结尾(FindLast()方法)开始搜索元素。

有序列表

如果需要基于键对所需集合排序,就可以使用SortedList<TKey,TValue>类

枚举器返回的元素是KeyValuePair<TKey,TValue>类型

字典

字典表示一种非常复杂的数据结构,这种数据结构允许按照某个键来访问元素。字典也成为映射或散射列表。

字典的主要特性是能根据键快速查找值

主要的类是Dictionary<TKey,TValue>

用作字典中键的类型必须重写Object类的GetHashCode()方法。只要字典类需要确定元素的位置,它就要调用GetHashCode()方法。

Dictionary<TKey,TValue>类支持每个键关联一个值

Lookup<TKey,TElement>类把键映射到一个值集上

有序字典

SortedDictionary<TKey,TValue>类是一个二叉搜索树,其中的元素根据键来排序

SortedList<TKey,TValue>实现基于数组的列表

SortedDictionary<TKey,TValue>类实现为一个字典

SortedList<TKey,TValue>类使用的内存比SortedDictionary<TKey,TValue>类少

SortedDictionary<TKey,TValue>类的元素插入和删除速度比较快

在用已排好序的数据填充集合时,若不需要修改容量,SortedList<TKey,TValue>类就比较快

包含不重复元素的集合称为“集(set)”

HashSet<T>集包含不重复元素的无序列表

SortedSet<T>集包含不重复元素的有序列表

都实现ISet<T>接口

ISet<T>接口提供的方法可以创建合集、交集,或者给出一个集是另一个集的超集或子集的信息。

可观察的集合

如果需要集合中的元素何时删除或添加的信息,就可以使用ObservableCollection<T>类

位组数

如果需要处理的数字有许多位,就可以使用BitArray类和BitVector32结构

并发集合

.NET 4包含的新名称空间System.Collections.Concurrent有几个线程安全的集合类

线程安全的集合可防止多个线程以相互冲突的方式访问集合

为了对集合进行线程安全的访问,定义了IProducerConsumerCollection<T>接口

时间: 2024-10-28 08:46:48

C#学习笔记 ----集合的相关文章

Java学习笔记----------集合Set

Java集合-----Set集合:就像一种容器,可以把多个对象放进该容器中.Java集合分为:Set.List.Map三种体系. Set:无序的,不可重复的: List:有序的,可重复的: Map:代表有映射关系的集合,Map保存的每一项数据都是key-value对.注意:Java 5后添加了Queue体系,代表一种队列集合实现. 集合和数组对比:1.数组一旦初始化,长度不可变:2.数组无法保存具有映射关系的数据,例如成绩表:语文---79:3.数组的元素可以是基本类型的值,也可以是对象,而集合

java学习笔记 --- 集合

1.定义:集合是一种容器,专门用来存储对象 数组和集合的区别?   A:长度区别  数组的长度固定 集合长度可变 B:内容不同  数组存储的是同一种类型的元素  而集合可以存储不同类型的元素  C:元素的数据类型问题  数组可以存储基本数据类型,也可以存储引用数据类型 集合只能存储引用类型 2.集合的继承体系结构 由于需求不同,Java就提供了不同的集合类.这多个集合类的数据结构不同,但是它们都是要提供存储和遍历功能的,   我们把它们的共性不断的向上提取,最终就形成了集合的继承体系结构图.  

【转】jmeter学习笔记——集合点

JMeter也有像LR中的集合点,本篇就来介绍下JMeter的集合点如何去实现. JMeter里面的集合点通过添加定时器来完成. 注意:集合点的位置一定要在Sample之前. 集合点:简单来理解一下,虽然我们的“性能测试”理解为“多用户并发测试”,但真正的并发是不存在的,为了更真实的实现并发这感念,我们可以在需要压力的地方设置集合点,拿那个用户和密码的地方,每到输入用户名和密码登录的地方,所有的虚拟用户都相互之间等一等,然后,一起访问. 1.接着之前创建的脚本,右键点击 线程组---->定时器-

Python 学习笔记 - 集合和文件操作

Set 集合 Set是一个无序而且不重复的元素集合.下面看看他有哪些基本功能 创建集合 >>> s1 = {11,22} s2 = set() s3 = set([11,22,33,4]) print(s1,s2,s3) ------------------- {11, 22} set() {33, 11, 4, 22} 把列表转换成集合,注意列表中重复的元素只保留一次 >>> li = [11,22,11,22] s1 = set(li) print(s1) ----

Python学习笔记:集合(set)基本内容

1.创建集合. 集合是无序的,元素不重复的一种序列. set() 创建,集合可变. >>> s = set('abcdef') >>> s {'d', 'c', 'b', 'a', 'e', 'f'} >>> type(s) <class 'set'> frozenset() 创建是不可变的集合,存在哈希值,可以做字典的key. >>> s = frozenset('abcdef') >>> s froz

java学习笔记—集合之Map集合

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: center; font: 12.0px Times } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Songti SC" } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times } p.p4 { margin: 0.0px 0.0px 0.0px 0.0

python学习笔记集合(七)

集合 set(集合)是一个无需不重复的元素数据集,对比列表的区别首先是无需的,不可以使用索引进行访问,另外一个特点是不能有重复数据. 项目开发中,集合主要用于数据元素去重和测试是否存在.集合还支持一些数学上的运算,例如:union(联合).intersection(交).difference(差).symmetric difference(对称差集). 创建集合:集合使用大括号或者set函数创建,需要注意空的集合不能使用{}创建,只能使用set函数,因为{}创建的是一个空字典. >> cour

Java学习笔记--集合类型详解

http://www.cnblogs.com/xwdreamer/archive/2012/05/30/2526822.html http://blog.csdn.net/liulin_good/article/details/6213815 http://www.cnblogs.com/meng72ndsc/archive/2010/12/23/1914477.html http://www.cnblogs.com/ningvsban/archive/2013/05/06/3062535.ht

Scala学习笔记--集合类型

队列Queue val emp = scala.collection.immutable.Queue[Int](); val has1 = emp.enqueue(1) val has123=has1.enqueue(List(2,3)) println(has1) //Queue(1) println(has123) //Queue(1,2,3) val emp2 = scala.collection.mutable.Queue[Int](); emp2.enqueue(1); emp2.en