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. 带着canvas去流浪系列之九 粒子动画

    [摘要] canvas实现粒子动画 示例代码托管在:http://www.github.com/dashnowords/blogs 一. 粒子特效 粒子特效一般指密集点阵效果,它并不是canvas独有 ...

  2. http状态码_____ 204/206/200

    HTTP的状态码有很多种,主要有五个大类 1xx(临时响应) 2xx(成功) 3xx(已重定向) 4xx(请求错误) 5xx(服务器错误) 每个大类还对应一些具体的分类.平时我们接触比较多的是200. ...

  3. HYSBZ 1036树链剖分

    一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w.我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. QMAX u v: 询问从 ...

  4. CodeForces-Round235D

      链接:http://codeforces.com/contest/401/problem/D 题意:给出一个数字num和m,问通过重新排列num中的各位数字中有多少个数(mod m)=0,直接枚举 ...

  5. java笔记 -- 乐观锁与悲观锁

    何谓乐观锁和悲观锁 乐观锁对应于生活中乐观的人总是想着事情往好的方向发展,悲观锁对应于生活中悲观的人总是想着事情往坏的方向发展.这两种人各有优缺点,不能不以场景而定说一种人好于另外一种人. 悲观锁 - ...

  6. 布隆过滤器的demo

    /** * 缓存击穿 * @author * */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = ...

  7. 3年Java开发10面阿里、京东、拼多多

    拼多多 地点:2号线娄山关路地铁站(金虹桥国际中心) 环境:新的写字楼,环境很好,有种高大上的感觉.大厅进入后需要登记,然后进闸机.电梯是需要刷卡才能使用的.会议室都是用城市名称命名,例如杭州.香港等 ...

  8. DS-5新加交叉编译工具

    Adding New Compiler Toolchains to DS-5 In this tutorial, you will learn how to add new compiler tool ...

  9. hdu 1054 Strategic Game (简单树形DP)

    Strategic Game Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  10. Winform修改配置文件节点保存到配置文件

    主要使用: Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); ...