using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace ConsoleDemo.List
{ /// <summary>
/// 基础回顾:集合:
/// 1:线性结构 一对一关系
/// 2:树形结构 一对多
/// 3:图状结构 多对多
/// </summary>
public class ListDemo
{
public static void Get()
{
#region 线性结构
{ {
/*
线性结构1:\
缺陷: 长度要指定,同理string[]
优点:内存连续存储 节约空间,可以索引访问,读取速度快,增删慢
*/
int[] list = new int[];
list[] = ;
list[] = ;
list[] = ; }
{
/*
线性结构1:\
缺陷: 将 int[],string[]转化为泛型,装箱拆箱增加性能损耗
优点:内存连续存储 节约空间,可以索引访问,读取速度快,增删慢
*/
ArrayList list = new ArrayList();
list.Add("sun");
list.Add("say");
list.Add("hello");
list.Add(DateTime.Now);
}
}
#endregion #region 链表结构
{
/*
链表结构
单链表,双向链表,循环链表
存储格式:数据+地址
缺点:读取慢,增加了存储空间
优点:增删快
*/
List<string> list = new List<string>();//使用泛型过程中制定了格式
list.Add("hello");
list.Add("shang hai");
} {
//先进先出
Queue<string> list = new Queue<string>();
list.Enqueue("are"); //入队
list.Enqueue("you");
list.Enqueue("ok"); Console.WriteLine(string.Join(",", list)); //are,you,ok list.Dequeue(); //出队
Console.WriteLine(string.Join(",", list)); //you,ok //获取队列头部元素,不做移除动作
string value = list.Peek();//you
Console.WriteLine(value); string value1 = list.Peek();//you
Console.WriteLine(value1);
}
{
//栈
Stack<string> list = new Stack<string>();
list.Push("易烊千玺");
list.Push("崇拜");
list.Push("我");
Console.WriteLine(string.Join(",", list)); //我,崇拜,易烊千玺 list.Pop();
Console.WriteLine(string.Join(",", list)); //崇拜,易烊千玺 string value = list.Peek();
Console.WriteLine(value); //崇拜 //支持重复
list.Push("崇拜");
Console.WriteLine(string.Join(",", list)); //崇拜,崇拜,易烊千玺 } {
//排重,唯一性,IP投票 统计用户id等
HashSet<string> list = new HashSet<string>();
list.Add("啊");
list.Add("啊");
list.Add("啊");
list.Add("我看到明星了!");
//HashSet:啊,我看到明星了! 长度:2
Console.WriteLine("HashSet:" + string.Join(",", list) + " 长度:" + list.Count); }
{
//排重,唯一性,IP投票 统计用户id等
SortedSet<string> list = new SortedSet<string>();
list.Add("啊");
list.Add("啊");
list.Add("啊");
list.Add("我看到明星了!"); //SortedSet: 啊,我看到明星了! 长度: 2
Console.WriteLine("SortedSet:" + string.Join(",", list) + " 长度:" + list.Count);
}
{
//自动排序
SortedSet<int> list = new SortedSet<int>();
list.Add();
list.Add();
list.Add();
list.Add(); //SortedSet:我期待的结果是自动排序了:9,11,20 长度: 3
Console.WriteLine("SortedSet:我期待的结果是自动排序了:" + string.Join(",", list) + " 长度:" + list.Count);
}
{
//增删都快的,用空间换性能
Hashtable list = new Hashtable(); list.Add("name", "sun");
list.Add("age", );
//list.Add("age", 19);//新增相同key会报错 Console.WriteLine(string.Join(",", list.Keys.Count)); // list.Remove("age");
Console.WriteLine(string.Join(",", list.Keys.Count));// bool IsExistName = list.Contains("name");
bool IsExistNa = list.Contains("na");
//True-False
Console.WriteLine(IsExistName + "-" + IsExistNa);
}
#endregion {
//IEnumerable 使用的时候linq to object方式 Console.WriteLine("_________________________");
MyColor colors = new MyColor();
foreach (string c in colors)
{
Console.WriteLine("color is : " + c);
} //ABC[] list = new ABC[10];
//list.Add
//foreach(var a in list)
//{
// Console.WriteLine("ABC is :"+ a.Name);
//} int[] myArray = { , , , };
IEnumerator myie = myArray.GetEnumerator();
myie.Reset();
while (myie.MoveNext())
{
int i = (int)myie.Current;
Console.WriteLine("Value: {0}", i);
} /* 延时执行: IQueryable,IEnumberalb 为延时执行(用到的时候再查),IList一次性加载
顺时执行: IList一次性查询后加载到内存
IQueryable接口与IEnumberable接口的区别:
IEnumerable<T> 泛型类在调用自己的SKip 和 Take 等扩展方法之前数据就已经加载在本地内存里了,
IQueryable<T> 是将Skip ,take 这些方法表达式翻译成T-SQL语句之后再向SQL服务器发送命令,
它并不是把所有数据都加载到内存里来才进行条件过滤。 */ //IQueryable 生成sql 采用表达式目录树,二叉树查找
//IQeurable(IQuerable<T>):不在内存加载持久数据,因为这家伙只是在组装SQL,(延迟执行) 到你要使用的时候,
//例如 list.Tolist() or list.Count()的时候,数据才从数据库进行加载(AsQueryable())。
//IQueryable<CustomData> list2 = dbcontext.CustomDataList.Where(t => t.PrimaryDataID == "123"); //IEnumberalb,使用的是LINQ to Object方式 内置委托,它会将AsEnumerable()时对应的所有记录都先加载到内存
//,然后在此基础上再执行后来的Query
//IEnumerable<CustomData> list2 = dbcontext.CustomDataList.Where(t => t.PrimaryDataID == "123").AsEnumerable(); // IList<CustomData> list2 = dbcontext.CustomDataList.Where(t => t.PrimaryDataID == "123").ToList(); //List:IList:ICollection:IEnumberable
Console.WriteLine("_________________________");
}
}
}
public class ABC
{
public string Name { get; set; }
} /// <summary>
/// 实现了IEnumberable接口也可以
/// </summary>
public class MyColor : IEnumerable
{
string[] colors = { "red", "white", "black", "yellow" };
public IEnumerator GetEnumerator()
{
// throw new NotImplementedException();
return colors.GetEnumerator();
}
}
}

C# 集合汇总的更多相关文章

  1. C#中集合汇总

    平时敲代码,只关注如何使用,没有深入去研究一些本质性的东西,靠死记硬背,不去真正理解,其实最后是很难记住的. 对于C#常见的集合,自己平时好像只有用到List,Dictionary,ArrayList ...

  2. 【游戏】2048及各种变种大集合汇总【更新ing~新版Floppy2048 - 恒星聚变版 - 恶搞改数据】

    threes - 鼻祖 手机版:http://asherv.com/threes/ js版:http://threesjs.com/ 2048 - 原版 http://gabrielecirulli. ...

  3. 集合家族——List集合汇总

    一.概述 List继承了Collection,是有序的列表. 可重复数据 实现类有ArrayList.LinkedList.Vector.Stack等 ArrayList是基于数组实现的,是一个数组队 ...

  4. Collection集合汇总

    Collectioin(java) Collection简介 打开帮助文档 java.utill //使用时需要导包 Interface Collection 集合层次结构中的根界面 . 集合表示一组 ...

  5. 2017上半年技术文章集合【Android】—184篇文章分类汇总

    地址: http://blog.csdn.net/androidstarjack/article/details/77923753 声明 | 本文是于亚豪 原创 终端研发部 前言: 2017年已经过大 ...

  6. Java 集合介绍

    1, Set :集合中对象不按特定的方式排序,并且没有重复对象,它有些实现类能对集合按特定方式排序 List :集合中对象按照索引位置排序,可以有重复对象,允许按照对象在集合中的索引位置检索独享,Li ...

  7. OC学习13——Foundation框架中的集合

    OC集合类是一些非常有用的工具类,它可以用于存储多个数量不等的对象,并可以实现常用的数据结构(栈.队列等),此外,OC集合还可用于保存具有映射关系的关联数组.OC的集合大致可以分为:NSArray.N ...

  8. WinForm获取当前路径汇总

    Winform获取应用程序的当前路径的方法集合汇总,值得收藏备用 具体如下, //获取当前进程的完整路径,包含文件名(进程名). string str = this.GetType().Assembl ...

  9. Collection 集合框架

    1. Collection 集合框架:在实际开发中,传统的容器(数组)在进行增.删等操作算法和具体业务耦合在一起,会增加程序的开发难度:这时JDK提供了这样的容器---Collection 集合框架, ...

随机推荐

  1. jQuery九宫格抽奖

    <div id="box"> <div class="content content-1">1</div> <div ...

  2. 在vue中使用基于d3为基础的dagre-d3.js搞定一个流程图组件

    项目中想搞定一个流程图,开始使用了阿里的G6,但是G6目前不支持手势,这样就很郁闷了,因为公司的领导都是使用iPad看的,你不支持手势是不行的,后来又想到了百度的echarts,试了试,感觉还不错,手 ...

  3. NAT的三种类型

    一.静态NAT 内部本地地址一对一转换成内部全局地址,相当内部本地的每一台PC都绑定了一个全局地址,即使这个地址没有被使用,其他的电脑也不能拿来转换使用,这样容易造成IP地址的资源浪费,一般是用于在内 ...

  4. Spring Boot 最流行的 16 条实践解读!【华为云技术分享】

    置顶:华为云618大促火热进行中,全场1折起,免费抽主机,消费满额送P30 Pro,点此抢购. Spring Boot是最流行的用于开发微服务的Java框架.在本文中,将与大家分享自2016年以来笔者 ...

  5. Vue全家桶高仿小米商城

    大家好,我是河畔一角,时隔半年再次给大家带来一门重量级的实战课程:<Vue全家桶高仿小米商城>,现在很多公司都在参与到商城的构建体系当中,因此掌握一套商城的标准开发体系非常重要:商城的开始 ...

  6. (全国多校重现赛一) H Numbers

    zk has n numbers a1,a2,...,ana1,a2,...,an. For each (i,j) satisfying 1≤i<j≤n, zk generates a new ...

  7. UESTC1961-咸鱼睡觉觉

    咸鱼睡觉觉 Time Limit: 1000 MS     Memory Limit: 64 MB Submit Status 咸鱼要睡觉觉了! 但那群咕咕有点烦. 咸鱼决定要赶走一些咕咕,使得他们不 ...

  8. unordered_map / HashTable 的负载因子是什么意思

    // in C++ 前段时间在看一些关于这个的文章时遇到了一些问题:unordered_map / HashTable 的负载因子是什么意思 经过度娘的搜索,最后得出: 若设 Hash 表的桶数量为 ...

  9. 【VUE】数组

    [VUE]常用函数 转载:https://www.cnblogs.com/yangchongxing/p/10637087.html 目录 ============================== ...

  10. LinuxMint自定义快捷键

    如图