C#中集合汇总
平时敲代码,只关注如何使用,没有深入去研究一些本质性的东西,靠死记硬背,不去真正理解,其实最后是很难记住的。
对于C#常见的集合,自己平时好像只有用到List,Dictionary,ArrayList,Array等几个,其实C#的集合远远不止这几个,
一直认为Dictionary是有序集合,哎,错了好久,今天总算明白了。
C#中的集合主要放在System.Collections和System.Collections.Generic这个两个命名空间下,其中System.Collections.Generic专门用于泛型集合,如下图:

关于各类集合的差异,网上已有不少大牛做过总结,参考如下:
http://blog.csdn.net/ceclar123/article/details/8655853
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace ConsoleApplication_List
{
class Program
{
static void Main(string[] args)
{
ListTest();
QueueTest();
StackTest();
LinkedListTest();
SortedListTest();
DictionaryTest();
SortDictionaryTest();
SetTest();
SortedSetTest(); Console.Read();
} #region MyRegion /// <summary>
/// 列表
/// </summary>
static void ListTest()
{
Console.WriteLine("List"); List<string> list = new List<string>();
list.Add("张三");
list.Add("李四");
list.Add("王五"); for (int i = ; i < list.Count; i++)
{
Console.WriteLine("for:" + i.ToString() + " " + list[i]);
} Console.WriteLine("................."); list.RemoveAt();
foreach (var item in list)
{
Console.WriteLine("Foreach:" + item);
} Console.WriteLine("................."); list.AddRange(new string[] { "demo1", "demo2", "demo3" });
list.ForEach(PrintEach); Console.WriteLine("................."); } private static void PrintEach(string item)
{
Console.WriteLine("Foreach:" + item);
} #endregion /// <summary>
/// 队列
/// </summary>
static void QueueTest()
{
Console.WriteLine("Queue"); Queue<string> queue = new Queue<string>();
queue.Enqueue("张三");
queue.Enqueue("李四");
queue.Enqueue("王五");
queue.Enqueue("田六");
queue.Enqueue("赵七"); Console.WriteLine("................."); foreach (string item in queue)
{
Console.WriteLine("foreach迭代:" + item);
} Console.WriteLine("................."); while (queue.Count > )
{
Console.WriteLine("出队:" + queue.Dequeue());
}
} /// <summary>
/// 栈
/// </summary>
public static void StackTest()
{
Console.WriteLine("stack"); Stack<string> stack = new Stack<string>();
stack.Push("张三");
stack.Push("李四");
stack.Push("王五");
stack.Push("田六");
stack.Push("赵七"); foreach (string item in stack)
{
Console.WriteLine("Foreach迭代:" + item);
}
Console.WriteLine("................."); while (stack.Count > )
{
Console.WriteLine("出栈:" + stack.Pop());
}
Console.WriteLine(".................");
} /// <summary>
/// 链表
/// </summary>
public static void LinkedListTest()
{
Console.WriteLine("LinkedList"); LinkedList<string> linkedList = new LinkedList<string>();
LinkedListNode<string> node = new LinkedListNode<string>("root");
linkedList.AddFirst(node);
linkedList.AddAfter(node, "张三");
linkedList.AddAfter(node, "李四");
linkedList.AddAfter(node, "王五");
linkedList.AddAfter(node, "田六"); foreach (string item in linkedList)
{
Console.WriteLine("foreach迭代:" + item);
}
Console.WriteLine("................."); node = linkedList.First;
Console.WriteLine("第一个元素:" + node.Value);
node = linkedList.Last;
Console.WriteLine("最后一个元素:" + node.Value);
Console.WriteLine(".................");
} /// <summary>
/// 有序列表
/// </summary>
public static void SortedListTest()
{
Console.WriteLine("SortedList"); SortedList<int, string> sortList = new SortedList<int, string>();
sortList.Add(,"张三");
sortList.Add(,"李四");
sortList.Add(,"王五");
sortList.Add(,"田六"); foreach (KeyValuePair<int, string> item in sortList)
{
Console.WriteLine("key=" + item.Key + ";value=" + item.Value);
}
} /// <summary>
/// 字典
/// </summary>
public static void DictionaryTest()
{
Console.WriteLine("Dictionary"); Dictionary<int, string> dict = new Dictionary<int, string>();
dict.Add(, "张三");
dict.Add(, "李四");
dict.Add(, "王五");
dict.Add(, "田六");
dict.Add(, "赵七"); foreach (KeyValuePair<int, string> item in dict)
{
Console.WriteLine("key=" + item.Key + ";value=" + item.Value);
}
} /// <summary>
/// 有序字典
/// </summary>
public static void SortDictionaryTest()
{
Console.WriteLine("SortDictionary"); SortedDictionary<int, string> sortDict = new SortedDictionary<int, string>();
sortDict.Add(, "张三");
sortDict.Add(, "李四");
sortDict.Add(, "王五");
sortDict.Add(, "田六");
sortDict.Add(, "赵七"); foreach (KeyValuePair<int, string> item in sortDict)
{
Console.WriteLine("key=" + item.Key + ";value=" + item.Value);
}
} /// <summary>
/// 集
/// </summary>
public static void SetTest()
{
Console.WriteLine("HashSet"); HashSet<string> hSet = new HashSet<string>();
hSet.Add("张三");
hSet.Add("李四");
hSet.Add("王五");
hSet.Add("田六");
hSet.Add("赵七"); foreach (String item in hSet)
{
Console.WriteLine("foreach迭代:" + item);
}
} /// <summary>
/// 有序集
/// </summary>
public static void SortedSetTest()
{
Console.WriteLine("HashSet"); SortedSet<string> sortSet = new SortedSet<string>();
sortSet.Add("张三");
sortSet.Add("李四");
sortSet.Add("王五");
sortSet.Add("田六");
sortSet.Add("赵七"); foreach (String item in sortSet)
{
Console.WriteLine("foreach迭代:" + item);
}
}
}
}
C#中集合汇总的更多相关文章
- web项目中 集合Spring&使用junit4测试Spring
web项目中 集合Spring 问题: 如果将 ApplicationContext applicationContext = new ClassPathXmlApplicationContext(& ...
- javascript中event汇总
原文:javascript中event汇总 ie firefox chrome opera Safari浏览器中对 event的处理并不一致,在此我将各个浏览器中event的兼容处理做了一个汇总,此处 ...
- Java中集合List,Map和Set的区别
Java中集合List,Map和Set的区别 1.List和Set的父接口是Collection,而Map不是 2.List中的元素是有序的,可以重复的 3.Map是Key-Value映射关系,且Ke ...
- .Net中集合排序的一种高级玩法
背景: 学生有名称.学号, 班级有班级名称.班级序号 学校有学校名称.学校编号(序号) 需求 现在需要对学生进行排序 第一排序逻辑 按学校编号(序号)排列 再按班级序号排列 再按学生学号排列 当然,在 ...
- Python中集合set()的使用及处理
在Python中集合(set)与字典(dict)比较相似,都具有无序以及元素不能重复的特点 1.创建set 创建set需要一个list或者tuple或者dict作为输入集合 重复的元素在set中会被自 ...
- java中集合Collection转list对象
参考:java中集合Collection转list对象 首先我的需求是获取到购物车列表,购物车列表是一个Map对象,构造方法获取购物项,这里购物项是Collection对象 // 购物项集合,K商品I ...
- C# 中集合类型需要按多个条件排序
在 C# (.net 3.5 之后) 中集合是可以通过 OrderBy() 和 OrderByDescending()方法来进行排序的,如果需要集合中的元素是对象,还可以通过 Lambda表达式进行按 ...
- (转)CloudStack 安装及使用过程中常见问题汇总
CloudStack 安装及使用过程中常见问题汇总 在做工程项目中对CloudStack 安装及使用过程中常见的几个问题及如何解决做一个总结. 1.Windows XP虚拟 ...
- Matlab中插值函数汇总(上)
Matlab中插值函数汇总分上下两个部分,主要整合自matlabsky论坛dynamic发表于2009-2-21 21:53:26 的主题帖,以及豆丁网rickoon上传的教材第8章<插值,拟合 ...
随机推荐
- HDU 4630 No Pain No Game(树状数组)
题目链接 看的别人的题解,离线之后,按r排序,枚举1-n,利用pre[j],存上次j的倍数出现的位置,树状数组里统计的当前位置到最后的最大值,树状数组是求区间最值其实应该很麻烦的,但是此题用法只是求到 ...
- TAT,我的LCT转双旋了
这里是rotate和splay函数 void rotate(int x) { ]==x; ch[y][d^]=ch[x][d];pre[ch[x][d]]=y; ch[z][ch[z][]==y]=x ...
- CentOS 下实现两台服务器之间的共享NFS
NFS的安装配置:centos 5 :yum install nfs-utils portmapcentos 6 :yum install nfs-utils rpcbind yum install ...
- 关于sql语句的优化问题
系统要求进行SQL优化,对效率比较低的SQL进行优化,使其运行效率更高,其中要求对SQL中的部分in/not in修改为exists/not exists 修改方法如下: in的SQL语句 SELEC ...
- html ul 里 能放其他标签吗,比如h3、p?
按标准的话,ul 里面应该只能放li,不过看见同事有的放了h3.p这些,这样到底可不可以? <ul>里面只能放<li>.但是<li>里面可以放<h*> ...
- python 面向对象的三大特征之 封装
封装:私有化 class Person(object): def __init__(self): self.__gender = "man" #在类的属性名称前面加__ self. ...
- _jobdu_1384:二维数组中的查找
/************************************************************************/ /* 题目描述: 在一个二维数组中,每一行都按照从 ...
- hdu Super Jumping
简单的dp,最优子结构是dp[i],即从0~i来看,是的dp[i]最大,然后找到最大中的最大就可以了, 转移方程是:dp[i]=max{dp[i],dp[j]+value[i]},注意这里有两个判断条 ...
- Ubuntu彻底删除MySQL重装MySQL
1.删除 mysql sudo apt-get autoremove --purge mysql-server-5.0 sudo apt-get remove mysq ...
- python实现查找指定文件
若不包含子目录的遍历: import glob for filename in glob.glob("/data/testdata/*.jpg"): print filename ...