HashTable

由于是非泛型集合,因此存储进去的都是object类型,不管是键还是值。

Hashtable不允许排序 key不允许重复 键不允许为null

Queue和Queue<T>

Queue成为队列,队列是这样一种数据结构,数据有列表的一端插入,并由列表的另一端移除。就像单行道,只能从一段进,从一端出。Queue类实现了ICollection和IEnumerable接口。

1、先进先出

  2、可以添加null值到集合中

  3、允许集合中的元素重复

  4、Queue容量会按需自动添加

  5、Queue的等比因子是当需要更大容量时当前容量要乘以的数字,默认是2.0。

Queue q = new Queue();
q.Enqueue(1);//添加记录
q.Enqueue("helloword!");
q.Enqueue(1.23);
Console.WriteLine(q.Peek()); //输出1 获取值但不移除,与出列不同 返回位于Queue开始出的对象,但不将其移除,与出列不同,出列是会移除的
int Count = q.Count; //出队的时候q.Count在变化,因此q.Count放在循环条件里是不妥的
for (int i = 0; i < Count; i++)
{
Console.WriteLine(q.Dequeue().ToString()); //注意 输出 1 想家了 1.23 都是从最先添加的先拿
}
Console.WriteLine(q.Count); //输出0 出列一次,就自动移除了。

Queue<int> qInt = new Queue<int>();
qInt.Enqueue(1);
qInt.Enqueue(2);
qInt.Enqueue(3);
Console.WriteLine(qInt.Peek()); //输出1
int IntCount = qInt.Count;
for (int i = 0; i < IntCount; i++)
{
Console.WriteLine(qInt.Dequeue()); //注意 输出 123 都是从最先添加的先拿
}
Console.WriteLine(q.Count); //输出0 出列一次,就自动移除了。

Stack

添加和移除都在一端进行 后进先出

1、后进先出。

  2、可以添加null值到集合中。

  3、允许集合中的元素重复。

  4、Stack的容量会按需自动增加。

Stack s = new Stack();
s.Push(1);//添加
s.Push("helloword!");
s.Push(1.23);
Console.WriteLine(s.Peek()); //输出1.23 返回位于Stack顶部的对象,但不移除,注意出栈是移除的。它不移除仅仅返回。

int Count = s.Count; //差点犯了逻辑错误,在for里面如果是s.Count的话,很容易乱,因为出栈操作s.Count是在变动着的。
for (int i = 0; i < Count; i++)
{
Console.WriteLine(s.Pop()); //输出 1.23 想回家了 1 移除并返回Stack顶部的对象 出栈
}
Console.WriteLine(s.Count); //输出0

Stack<int> sInt = new Stack<int>();
sInt.Push(1);
sInt.Push(2);
sInt.Push(3);
Console.WriteLine(sInt.Peek()); //输出3

int IntCount = sInt.Count; //差点犯了逻辑错误,在for里面如果是s.Count的话,很容易乱,因为出栈操作s.Count是在变动着的。
for (int i = 0; i < IntCount; i++)
{
Console.WriteLine(sInt.Pop()); //输出 3 2 1
}
Console.WriteLine(sInt.Count); //输出0

SortedList与SortedList<T>

SortedList类实现了IDictionary、ICollection以及IEnumerable接口 键/值 键和索引 访问

键的排序

在SortedList中,键和值分别保存在一个数组中,当向Sorted添加一个元素时,SortedList类添加一个元素时,SortedList会首先对key进行排序,然后根据排序结果计算出要插入到集合中的位置索引,再分别将key和value插
入到各自数组的指定索引位置。当使用foreach循环集合中的元素时,SortedList会将相同索引位置的key和value放进一个DictionaryEntry类型的对象,然后返回。

SortedList SL = new SortedList();
SL.Add("txt","txt"); //Add的时候会自动排序
SL.Add("jpg","jpg");
SL.Add("png","png");
foreach (DictionaryEntry de in SL) //返回的是DictionaryEntry对象
{
Console.Write(de.Key + ":" + de.Value + " "); //输出 jpg:jpg png:png txt:txt //注意这个顺序啊,添加的时候就自动排序了
}

Console.WriteLine();
SortedList<int,string> SLString = new SortedList<int,string>();
SLString.Add(3, "333");
SLString.Add(2, "222");
SLString.Add(1, "111");
foreach (KeyValuePair<int,string> des in SLString) //返回的是KeyValuePair,在学习的时候尽量少用var,起码要知道返回的是什么
{
Console.Write(des.Key + ":" + des.Value + " ");
}

Console.ReadKey();

BitArray

位结构 二进制位(0和1)的集合
BitArray的值表示true或false。true表示位打开,false表示位关闭。BitArray实现了ICollection和IEnumerable接口。

1、BitArray集合不支持动态调整,因此没有Add和Remove方法。

  2、若需要调整集合的大小,可通过设置属性Length的值来实现。

  3、集合中的索引从0开始。

  4、使用BitArray(int length)构造函数初始化BitArray集合后,其值均为false。

  5、BitArray集合之间支持按位“或”、“异或”、“与运算”,参与这三类运算的BitArray集合长度必须相等。否则会抛出异常。

BitArray BA = new BitArray(3);
BA[0] = true;
BA[1] = false;
BA[2] = true;

BitArray BB = new BitArray(3);
BA[0] = true;
BA[1] = false;
BA[2] = true;

BitArray BOr = BA.Or(BB); //与运算,返回一个新的BitArray
foreach (var b in BOr)
{
Console.Write(b + "-"); //True-False-True
}

HashTable Queue Stack SortedList BitArray的更多相关文章

  1. stl容器学习——queue,stack,list与string

    目录 头文件 string 目录部分 1.string的定义及初始化 ① 用一个字符串给另一个字符串赋值 ②用字符串常量对字符串进行赋值 ③ 用n个相同的字符对字符串赋值 2.string的运算符及比 ...

  2. C#常用的集合类型(ArrayList类、Stack类、Queue类、Hashtable类、SortedList类)

    1.ArrayList类 ArrayList类主要用于对一个数组中的元素进行各种处理.在ArrayList中主要使用Add.Remove.RemoveAt.Insert四个方法对栈进行操作.Add方法 ...

  3. 【Todo】Java Queue Stack Vector ArrayList

    Java集合框架里存在Queue这个接口,之后有不同类型的队列的实现. 有Stack这个类实现堆栈,其实这个类是通过继承Vector的方式来实现的, Vector和ArrayList的实现方式差不多, ...

  4. page74-泛型可迭代的基础集合数据类型的API-Bag+Queue+Stack

    [泛型可迭代的基础集合数据类型的API] 背包:就是一种不支持从中删除元素的集合数据类型——它的目的就是帮助用例收集元素并迭代遍历所有收集到的元素.(用例也可以检查背包是否为空, 或者获取背包中元素的 ...

  5. Part 82 to 85 Talking about Generic queue, stack collection class

    Part 82   Generic queue collection class Part 83   Generic stack collection class Part 84   Real tim ...

  6. Java 集合的简单实现 (ArrayList & LinkedList & Queue & Stack)

    ArrayList 就是数组实现的啦,没什么好说的,如果数组不够了就扩容到原来的1.5倍 实现了迭代器 package com.wenr.collection; import java.io.Seri ...

  7. queue,stack的相互实现

    Implement Queue using Stacks [抄题]: [思维问题]: [一句话思路]: 取头部.取出来的时候,用一个output来倒序 [输入量]:空: 正常情况:特大:特小:程序里处 ...

  8. STL之queue&stack使用简介

       queue 队列也是一个线性存储表,与后进先出的堆栈不同,元素数据的插入在表的一端进行,在另一端删除,从而构成了一个先进先出(First In First Out) 表.插入一端称为队尾,删除一 ...

  9. C++ 数据结构模板 队列 栈 动态链表 模板 Queue Stack List

    C++数据结构模板,可以实现基本功能,用法和stl差不多,比如Q.pop();Q.push(a);Q.front();...... (由于动态链表用的不多,若有错误望各位大神不吝赐教:) 队列: cl ...

随机推荐

  1. [POJ 2386] Lake Counting(DFS)

    Lake Counting Description Due to recent rains, water has pooled in various places in Farmer John's f ...

  2. MongoDB集群配置笔记二(实战)

    单台mongodb配置文件: dbpath=/opt/mongodb/data logpath=/opt/mongodb/logs/mongodb.log logappend=true fork=tr ...

  3. 案例2:用一条SQL查询出数学语文成绩都大于80分的学生姓名?

    方法1: 查出科目成绩有小于80分的学生姓名,再约束并去重学生不等于查出来的姓名 select distinct A.name from t_score A where A.name not in(s ...

  4. vue.js精讲01

    笔记及源码地址 : https://github.com/wll8/vue_note 01 2017-09-13 view一个 mvvm框架(库),和 ag 类似.比较小巧,容易上手. mvc: mv ...

  5. C++类模板和模板类

    C++ 中有一个重要特性,那就是模板类型.类似于Objective-C中的泛型.C++通过类模板来实现泛型支持. 1 基础的类模板 类模板,可以定义相同的操作,拥有不同数据类型的成员属性. 通常使用t ...

  6. IOS学习笔记一1

    //创建.h文件 界面的类文件(创建一个类) @interface MyClass:NSObject{ //类变量声明 int a; int b; } //类属性声明 (int) p2 //类方法声明 ...

  7. 在SQL Server 2018 Management Studio中修改表字段顺序

    有时我们可能需要为一个已存在的数据库表添加字段,并且想让这个字段默认排的靠前一些,这时就需要为表字段重新进行排序,默认情况下在Management Studio中调整顺序并保存时会提示“不允许保存更改 ...

  8. [原][粒子特效][spark]粒子系统system、主节点group、渲染器render

    深入浅出spark粒子特效连接:https://www.cnblogs.com/lyggqm/p/9956344.html system: A class defining a complete sy ...

  9. Spring Cloud 入门教程(一): 服务注册

    1.  什么是Spring Cloud? Spring提供了一系列工具,可以帮助开发人员迅速搭建分布式系统中的公共组件(比如:配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁 ...

  10. VC工程编译相关

    ①error C4996: 'sprintf': This function or variable may be unsafe 这不是语法的错误,而是IDE默认禁止这种容易产生漏洞的旧函数,解决的方 ...