C Sharp 集合

文章目录

Array

keyword:连续存储、相同类型、快速访问、慢速增删、长度不变、下标访问

常用方法示例:

csharp 复制代码
void Main()
{
	int[] intArray = new int[]{1,2,3,4,5,6,8,7};
	//Length获取数组长度
	Console.WriteLine("Length获取数组长度:");
	int length=intArray.Length;
	Console.WriteLine(length);

	//IndexOf获取值的索引
	Console.WriteLine("IndexOf获取值的索引:");
	int index=Array.IndexOf(intArray,4);
	Console.WriteLine(index);
	//foreach遍历数组
	Console.WriteLine("foreach遍历数组:");
	foreach(int i in intArray){
		Console.Write(i+" ");
	}
	Console.WriteLine("");
	
	//Reverse逆转数组
	Console.WriteLine("Reverse逆转数组:");
	Array.Reverse(intArray);
	foreach (int i in intArray)
	{
		Console.Write(i+" ");
	}
	Console.WriteLine("");
	
	//Sort排序数组
	Array.Sort(intArray);
	Console.WriteLine("Sort排序数组");
	foreach (int i in intArray)
	{
		Console.Write(i + " ");
	}
}
Length获取数组长度:
8
IndexOf获取值的索引:
3
foreach遍历数组:
1 2 3 4 5 6 8 7 
Reverse逆转数组:
7 8 6 5 4 3 2 1 
Sort排序数组
1 2 3 4 5 6 7 8 

ArrayList

keyword:连续存储、不同类型、快速读取、慢速增删、长度可变、索引访问

常用方法示例:

csharp 复制代码
void Main()
{
	ArrayList arrayList1 = new ArrayList(5);
	ArrayList arrayList2 = new ArrayList() {1,2,3,4,5};
	
	Console.WriteLine("Count集合元素个数:");
	int number = arrayList2.Count;
	Console.WriteLine(number);

	Console.WriteLine("Add添加元素:");
	arrayList1.Add(1);
	arrayList1.Add("love");
	arrayList1.Add(2);
	foreach(var i in arrayList1){
		Console.Write(i+" ");
	}
	Console.WriteLine("");

	Console.WriteLine("AddRange在末尾添加一个ArrayList:");
	arrayList1.AddRange(arrayList2);
	foreach (var i in arrayList1)
	{
		Console.Write(i + " ");
	}
	Console.WriteLine("");

	Console.WriteLine("Insert指定插入&RemoveAt指定删除:");
	arrayList1.Insert(0,100);
	arrayList1.RemoveAt(2);
	foreach (var i in arrayList1)
	{
		Console.Write(i + " ");
	}
	Console.WriteLine("");
}
Count集合元素个数:
5
Add添加元素:
1 love 2 
AddRange在末尾添加一个ArrayList:
1 love 2 1 2 3 4 5 
Insert指定插入&RemoveAt指定删除:
100 1 2 1 2 3 4 5 

List<T>

ArrayLIst的泛型类,连续存储、长度可变

常用方法示例:

csharp 复制代码
void Main()
{
	List<int> intList = new List<int>() { 1, 2, 3, 4, 5 };
	Console.WriteLine("Add添加元素:");
	intList.Add(1);
	intList.Add(2);
	foreach (var i in intList)
	{
		Console.Write(i + " ");
	}
	Console.WriteLine("");

	Console.WriteLine("Remove删除第一个匹配的项:");
	intList.Remove(1);
	foreach (var i in intList)
	{
		Console.Write(i + " ");
	}
	Console.WriteLine("");

	Console.WriteLine("Contains具体元素是否在列表中:");
	bool flag=intList.Contains(2);
	Console.WriteLine(flag);

	Console.WriteLine("Exists满足条件的元素是否在列表中:");
	bool flag2 = intList.Exists(n=>n%2==0);
	Console.WriteLine(flag2);
}
Add添加元素:
1 2 3 4 5 1 2 
Remove删除第一个匹配的项:
2 3 4 5 1 2 
Contains查看某项是否在列表中:
True
Exists某项是否在列表中:
True

HashSet

keyword:没有重复、允许null、无序、线程不安全

常用方法示例:

csharp 复制代码
void Main()
{
	HashSet<String> hash1=new HashSet<string>();
	Console.WriteLine("Add添加元素:");
	hash1.Add("hello");
	hash1.Add("world");
	hash1.Add("bro");
	foreach(String h in hash1){
		Console.Write(h+" ");
	}
	Console.WriteLine("");
	
	Console.WriteLine("Contains判断元素是否存在:");
	bool flag=hash1.Contains("hello");
	Console.WriteLine(flag);

	Console.WriteLine("Remove删除元素:");
	hash1.Remove("hello");
	foreach (String h in hash1)
	{
		Console.Write(h+" ");
	}
	Console.WriteLine("");
	
	Console.WriteLine("Size计算大小:");
	int number = hash1.Count();
	Console.WriteLine(number);
}
Add添加元素:
hello world bro 
Contains判断元素是否存在:
True
Remove删除元素:
world bro 
Size计算大小:
2

HashTable

keyword:线程安全

常用方法示例:

csharp 复制代码
void Main()
{
	Hashtable table1=new Hashtable();

	Console.WriteLine("Add添加元素:");
	table1.Add(1,"hello");
	table1.Add(2,"world");
	table1.Add(3,"bro");
	Console.WriteLine("遍历键keys");
	foreach (int k in table1.Keys)
	{
		Console.Write(k + " ");
	}
	Console.WriteLine("");
	
	Console.WriteLine("遍历值value");
	foreach (String v in table1.Values)
	{
		Console.Write(v + " ");
	}
	Console.WriteLine("");

	Console.WriteLine("Contains判断元素是否存在:");
	bool flag = table1.Contains("hello");
	Console.WriteLine(flag);

	Console.WriteLine("Remove删除key:");
	table1.Remove(1);
	foreach (DictionaryEntry t in table1)
	{
		Console.Write(t + " ");
	}
	Console.WriteLine("");
}
Add添加元素:
遍历键keys
3 2 1 
遍历值value
bro world hello 
Contains判断元素是否存在:
False
Remove删除key:
[3, bro] [2, world] 

Dictionary<K,T>

有序的、唯一的

csharp 复制代码
void Main()
{
	Dictionary<int, string> myDictionary = new Dictionary<int, string>();
	
	Console.WriteLine("Add添加元素:");
	myDictionary.Add(1, "hello");
	myDictionary.Add(2, "good");
	myDictionary.Add(3, "boy");
	foreach (KeyValuePair<int,string> t in myDictionary)
	{
		Console.WriteLine(t.Key + t.Value );
	}
	Console.WriteLine("遍历键keys");
	foreach (int k in myDictionary.Keys)
	{
		Console.Write(k + " ");
	}
	Console.WriteLine("");

	Console.WriteLine("遍历值value");
	foreach (String v in myDictionary.Values)
	{
		Console.Write(v + " ");
	}
	Console.WriteLine("");

	Console.WriteLine("查找key");
	if (myDictionary.ContainsKey(2))
	{
		Console.WriteLine(myDictionary[2]);
	}
	Console.WriteLine("");
}
Add添加元素:
1hello
2good
3boy
遍历键key
1 2 3 
遍历值value
hello good boy 
查找key
good

Queue

keyword:先进先出

常用方法示例:

csharp 复制代码
void Main()
{
    Queue queue = new Queue();

	Console.WriteLine("Enqueue添加元素到队尾:");
    queue.Enqueue('A');
    queue.Enqueue('B');
    queue.Enqueue('C');

    Console.WriteLine("foreach遍历队列:");
    foreach (char c in queue)
    Console.Write(c + " ");
    Console.WriteLine();

    Console.WriteLine("Dequeue移除开头元素 ");
    char ch = (char)queue.Dequeue();
    Console.WriteLine(ch);

    Console.WriteLine("ToArray复制Queue到一个新的数组中");
    Object[] queue1= (Object[])queue.ToArray();
    foreach (char c in queue1)
    Console.Write(c + " ");
}
Enqueue添加元素到队尾:
foreach遍历队列:
A B C 
Dequeue移除开头元素 
A
ToArray复制Queue到一个新的数组中
B C 

Stack

keyword:先进后出

常用方法示例:

csharp 复制代码
void Main()
{
    Stack stack = new Stack(5);

	Console.WriteLine("Push入栈:");
	stack.Push('A');
	stack.Push('B');
	stack.Push('C');

	Console.WriteLine("foreach遍历栈:");
    foreach (char c in stack)
    Console.Write(c + " ");
    Console.WriteLine();

    Console.WriteLine("Pop出栈:");
    char ch = (char)stack.Pop();
	Console.WriteLine(ch);
	
	Console.WriteLine("Top查看栈顶:");
	char ch2 = (char)stack.Peek();
	Console.WriteLine(ch2);
}
Push入栈:
foreach遍历栈:
C B A 
Pop出栈:
C
Top查看栈顶:
B
相关推荐
无名之逆14 分钟前
Hyperlane:Rust 生态中的轻量级高性能 HTTP 服务器库,助力现代 Web 开发
服务器·开发语言·前端·后端·http·面试·rust
江沉晚呤时16 分钟前
使用 .NET Core 实现 RabbitMQ 消息队列的详细教程
开发语言·后端·c#·.netcore
大模型铲屎官19 分钟前
从零精通机器学习:线性回归入门
开发语言·人工智能·python·算法·机器学习·回归·线性回归
搞不懂语言的程序员28 分钟前
单例模式详解(java)
java·开发语言·单例模式
WangMing_X41 分钟前
C#实现图像缩放与裁剪工具
开发语言·c#·图像
Python破壁人手记1 小时前
《我的Python觉醒之路》之转型Python(十五)——控制流
java·服务器·开发语言·网络·python
siy23331 小时前
[c语言日寄]浮点数的排序
c语言·开发语言·数据结构·笔记·学习
天人合一peng1 小时前
C# PaddleOCR字符识别
开发语言·c#
才华是浅浅的耐心1 小时前
基于 Python 爬取 TikTok 搜索数据 Tiktok爬虫(2025.3.17)
开发语言·python
小安同学iter1 小时前
SpringMVC(八)Knife4j 接口文档
java·开发语言·spring boot·spring·java-ee·intellij-idea