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. http://t.cn/xxxxx的短链接如何生成?

    var convertStr = encodeURIComponent(urlStr); //转换的原链接可能存在"&"这样的特殊符号,导致原链接的某些字段会被当做ajax ...

  2. 浅谈css样式之list-type

    在我们的工作学习中,大多数人使用列表标签的时候总一般的选择是把list-type设置成none.不过可能很多人对于这个属性的细节并没有很深的了解.甚至会把list-type和list-type-sty ...

  3. Javascript实现百度API

    百度地图JavaScript API是一套由JavaScript语言编写的应用程序接口,可帮助您在网站中构建功能丰富.交互性强的地图应用,支持PC端和移动端基于浏览器的地图应用开发,且支持HTML5特 ...

  4. “智慧海绵城市”(SSC)监测评价体系整体解决方案

    一.方案简介 无论是内涝防治.黑臭水体治理,还是海绵城市规划设计及建设.评估,乃至未来智慧城市的建设,都需要有全面.致密.大量的城市水文监测数据和先进模拟仿真技术作基础支撑,唯有如此,决策才有据可依, ...

  5. Oracle基本的增删改查语句--本人使用scott用户中的表

    --感觉有用点个赞^v^ 1 --创建表空间 create tablespace mykebai datafile 'c:\mykebai.dbf' --数据问价存放位置 size 100m --数据 ...

  6. 用jquery实现楼层滚动对应导航高亮

    html 结构排版: // 定位到页面左侧或者右侧 <div class="nav">         <ul id="menu-list"& ...

  7. Newman

    目录 简介 安装 使用 简介 Newman是为postman而生,专门用来运行postman编写好的脚本 使用Newman,你可以很方便的用命令行来执行postman collections Newm ...

  8. 浅析Java堆,栈,方法区

    栈(Stack) 1.栈是线程私有的,其生命周期和线程相同. 2.每个方法在执行的时候都会开辟一个栈区,同时创建一个栈帧(Stack Frame). 3.栈帧用于存储局部变量表,操作数栈,动态链接和方 ...

  9. 关于页面打印window.print()的样式问题

    当我们打印网页的时候.有时候会发现.打印出来的.跟网页上看到的样式的差别有点大.这其中可能有的问题是.样式问题. 当调用打印(window.print())方法时.打印机会在网页的样式中查找 @med ...

  10. ACM-ICPC 2018 徐州赛区网络预赛 H. Ryuji doesn't want to study (线段树)

    Ryuji is not a good student, and he doesn't want to study. But there are n books he should learn, ea ...