当前位置: 首页 > news >正文

C Sharp 集合

文章目录

    • Array
    • ArrayList
    • List`<T>`
    • HashSet
    • HashTable
    • Dictionary<K,T>
    • Queue
    • Stack

Array

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

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:连续存储、不同类型、快速读取、慢速增删、长度可变、索引访问
常用方法示例:

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的泛型类,连续存储、长度可变
常用方法示例:

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、无序、线程不安全
常用方法示例:

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:线程安全
常用方法示例:

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>

有序的、唯一的

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:先进先出
常用方法示例:

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:先进后出
常用方法示例:

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

相关文章:

  • 包装类简单认识泛型
  • 音视频入门基础:RTCP专题(1)——RTCP官方文档下载
  • C/C++实现工厂模板设计模式(Factory Pattern)
  • 多模态RAG框架(一)ViDoRAG:Visual Document RAG via Dynamic Iterative Reasoning Agents
  • 【一起来学kubernetes】14、StatefulSet使用详解
  • 开箱即用的whisper-service服务
  • ccf3501密码
  • 重生之我在学Vue--第15天 Vue 3 动画与过渡实战指南
  • [IP]UART
  • HTML深度解读
  • [特殊字符] 轻松掌握JavaScript DOM:从入门到实战 [特殊字符]
  • Centos内核升级
  • C#的字符串之String类与StringBuilder类区别于适用场景
  • 基于物联网的幼儿看护辅助系统设计方案
  • [leetcode] 面试经典 150 题——篇3:滑动窗口
  • Excel(函数篇):IF函数、FREQUNCY函数、截取函数、文本处理函数、日期函数、常用函数详解
  • C# 异常处理‌的核心概念
  • Ubuntu服务器安装JupyterNotebook,以便通过浏览器访问Jupyter
  • 头歌-软件测试-黑盒测试用例
  • 自然语言处理(NLP)核心技术深度解析
  • 热点问答:特朗普与俄乌总统分别通话,他们谈了什么
  • 中纪报:强化监督推动过紧日子要求落到实处
  • 男子聚餐饮酒后身亡,同桌3人被判赔偿近20万元
  • 上海这场有温度的“人才集市”,为更多人才搭建“暖心桥”
  • 盐城经济技术开发区党工委书记王旭东接受纪律审查和监察调查
  • 3月中国减持189亿美元美债、持仓规模降至第三,英国升至第二