集合的概述

一.集合和数组都是容器

1.数组

(1)数组定义完成并启动后,类型确定,长度固定

(2)在进行增删数据操作的时候,数组是不太合适的,增删数据都需要放弃原有数组或者移位

(3)数组适合的场景:当业务数据的个数是固定的,且都是同一批数据类型的时候,可以采取数组存储

2.集合

(1)集合是java中存储对象数据的一种容器

(2)集合的大小不固定,启动后可以动态变化,类型也可以选择不确定

(3)集合非常适合做元素的增删操作

注意:集合中只能存储引用类型数据,如果要存储基本类型数据可以 选用包装类

(4)集合适合的场景:数据的个数不确定,需要进行增删操作的时候

二.Collection集合的体系特点

(1)Collection 单列集合,每个元素(数据)只包含一个值

         Map 双列集合,每个元素包含两个值

注意:前期先掌握Collection 集合体系的使用

集合:Collection 单列

            Map    双列

(2)集合对于泛型的支持:集合都是支持泛型的,可以在编译阶段约束集合只能操作某种数据类型

注意:集合和泛型都只能支持引用数据类型,不支持基本数据类型,所以集合中存储的元素都认为是对象

(3)集合的代表是:Collection接口

### C# 集合类型概述 在 C# 中,集合是一种用于存储和管理多个数据项的数据结构。与数组相比,集合提供了更灵活和强大的功能,可以动态调整大小,并支持多种操作,如添加、删除、查找和排序等。 C# 的集合类型主要分为两类:非泛型集合和泛型集合。非泛型集合位于 `System.Collections` 命名空间中,而泛型集合则位于 `System.Collections.Generic` 命名空间中。泛型集合的优势在于类型安全性,它们允许在编译时检查类型,从而避免了运行时的类型转换错误。 #### 非泛型集合 非泛型集合主要包括以下几种类型: - **ArrayList**:这是一个动态数组,可以存储任意类型的对象。它可以自动调整大小,适用于需要频繁添加和删除元素的场景。 - **Hashtable**:这是一个键值对集合,允许通过键快速查找对应的值。它适用于需要根据键进行高效查找的场景。 - **Stack**:这是一个后进先出(LIFO)的集合,适用于需要按照顺序处理元素的场景。 - **Queue**:这是一个先进先出(FIFO)的集合,适用于需要按顺序处理元素的场景。 #### 泛型集合 泛型集合主要包括以下几种类型: - **List<T>**:这是一个动态数组,专门用于存储特定类型的元素。它可以自动调整大小,适用于需要频繁添加和删除元素的场景。 - **Dictionary<TKey, TValue>**:这是一个键值对集合,允许通过键快速查找对应的值。它适用于需要根据键进行高效查找的场景。 - **Stack<T>**:这是一个后进先出(LIFO)的集合,适用于需要按照顺序处理元素的场景。 - **Queue<T>**:这是一个先进先出(FIFO)的集合,适用于需要按顺序处理元素的场景。 #### 特殊集合 除了上述常见的集合类型外,还有一些特殊的集合类型,如 `System.Collections.Specialized` 命名空间中的 `NameValueCollection` 和 `StringCollection` 等。这些集合类型通常用于特定的场景,如处理字符串键值对或字符串集合。 #### 线程安全的集合 对于多线程环境,C# 提供了线程安全的集合类型,这些类型位于 `System.Collections.Concurrent` 命名空间中。例如: - **ConcurrentBag<T>**:这是一个线程安全的集合,适用于多个线程同时添加和删除元素的场景。 - **ConcurrentDictionary<TKey, TValue>**:这是一个线程安全的键值对集合,适用于多个线程同时访问的场景。 - **ConcurrentQueue<T>**:这是一个线程安全的先进先出(FIFO)集合,适用于多个线程同时处理元素的场景。 ### 示例代码 以下是一个使用 `List<T>` 和 `Dictionary<TKey, TValue>` 的简单示例: ```csharp using System; using System.Collections.Generic; class Program { static void Main() { // 创建一个List<int>并添加元素 List<int> numbers = new List<int>(); numbers.Add(1); numbers.Add(2); numbers.Add(3); // 输出List<int>中的元素 Console.WriteLine("List<int> elements:"); foreach (int number in numbers) { Console.WriteLine(number); } // 创建一个Dictionary<string, int>并添加键值对 Dictionary<string, int> ages = new Dictionary<string, int>(); ages.Add("Alice", 30); ages.Add("Bob", 25); // 输出Dictionary<string, int>中的键值对 Console.WriteLine("\nDictionary<string, int> elements:"); foreach (KeyValuePair<string, int> age in ages) { Console.WriteLine($"{age.Key}: {age.Value}"); } } } ``` ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值