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章<插值,拟合 ...
随机推荐
- Time.deltaTime 增量时间
static var deltaTime : float Description描述 The time in seconds it took to complete the last frame (R ...
- CodeForces Round 198
总体感觉这次出的题偏数学,数学若菜表示果断被虐.不过看起来由于大家都被虐我2题居然排到331,rating又升了74.Div2-AA. The Walltime limit per test1 sec ...
- jad 反编译java
1 安装 解压jad.zip文件到任何的目录.将会创建两个文件,一个是jad.exe另一个是readme文 件,不需要任何别安装2 如何使用jad 如果我们有一个单独的java文件example1.c ...
- BZOJ3290 : Theresa与数据结构
CANCEL操作可以看作删点,X坐标可以离散化 将询问按Z坐标差分,转化成两个求Z<=某个数的和的询问 将操作CDQ分治 每次将前一半的修改.后一半的查询按照Z坐标排序 然后扫描线,每到一个询问 ...
- audio.js – 随时随地,播放 HTML5 的声音
audio.js是一个HTML5标签的简易包装.但它不仅在支持HTML5的浏览器上能够轻松调用标签,并在不支持HTML5的浏览器上也能通过Flash作为B计划使用.除此之外,audio.js所提供的界 ...
- Css3 - 全面学习
css3实验.生成.学习网站 http://www.css3maker.com/ http://www.css3.me/ 查询前缀和兼容性 http://caniuse.com/ 1.文本阴影 < ...
- Powershell的远程管理
powershell有强大的远程管理功能,但是现在遇到个问题,我们之前的客户端操作系统都是默认安装的,没做默认设置,请问如何通过gpo将所有和远程有关的设置都搞定啊?到底要设置哪些个选项? 我的环 ...
- POJ 2528 Mayor's posters(线段树区间染色+离散化或倒序更新)
Mayor's posters Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 59239 Accepted: 17157 ...
- easyui datagrid 列隐藏和显示
easyui datagrid 列隐藏和显示 用js怎么控制列的显示和隐藏? 最佳答案 $('#grid').datagrid('hideColumn','列field');把hideColu ...
- snprintf/strncpy/strlcpy速度测试
速度测试代码: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <un ...