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
相关推荐
CVer儿42 分钟前
qt资料2025
开发语言·qt
DevilSeagull1 小时前
JavaScript WebAPI 指南
java·开发语言·javascript·html·ecmascript·html5
2zcode1 小时前
基于Matlab不同作战类型下兵力动力学模型的构建与稳定性分析
开发语言·matlab
葵野寺3 小时前
【RelayMQ】基于 Java 实现轻量级消息队列(七)
java·开发语言·网络·rabbitmq·java-rabbitmq
zyx没烦恼4 小时前
Qt 基础编程核心知识点全解析:含 Hello World 实现、对象树、坐标系及开发工具使用
开发语言·qt
木心爱编程4 小时前
C++链表实战:STL与手动实现详解
开发语言·c++·链表
mkhase4 小时前
9.11-QT-QT的基本使用
开发语言·qt
Kyln.Wu4 小时前
【python实用小脚本-211】[硬件互联] 桌面壁纸×Python梦幻联动|用10行代码实现“开机盲盒”自动化改造实录(建议收藏)
开发语言·python·自动化
Hello.Reader4 小时前
从零到一上手 Protocol Buffers用 C# 打造可演进的通讯录
java·linux·c#
稻草人想看远方5 小时前
GC垃圾回收
java·开发语言·jvm