C# System.Collections
System.collection类:
动态数组ArrayList |
代表了可被单独索引的对象的有序集合。也就是说他是一个动态的数组,你可以通过索引来进行增删改等操作,数组会自动调整数组的大小。允许在列表进行动态内存的分配、增加、收索和排序。 Capacity:获取或设置 ArrayList 可以包含的元素个数。
|
哈希表hashtable |
可以使用健来进行访问、排序元素。 Count:获取Hashtable中包含的键值对个数。 IsFixedSize:获取一个值,表示Hashtable是否具有固定大小。 IsReadOnly:获取一个值,表示Hashtable是否只读。 Item:获取或设置与指定的键相关的值。 Keys:获取一个 ICollection,包含Hashtable中的键。 Values:获取一个ICollection,包含Hashtable中的值。
|
排序列表sortlist |
可以使用键或值来访问列表中的项。 Capacity:获取或设置SortedList的容量。 Count:获取 SortedList 中的元素个数。 IsFixedSize:获取一个值,表示 SortedList 是否具有固定大小。 IsReadOnly:获取一个值,表示 SortedList 是否只读。 Item:获取或设置与 SortedList 中指定的键相关的值。 Keys:获取 SortedList 中的键。 Values:获取 SortedList 中的值。
|
堆栈stack |
后进先出队列。Count:获取堆栈中的元素个数。
|
队列queue |
先进先出队列。Count:获取队列中的元素个数。
|
点阵列BitArray |
代表了使用1和0来表示的二进制数组。 Count:获取 BitArray 中包含的元素个数。 IsReadOnly:获取一个值,表示 BitArray 是否只读。 Item:获取或设置 BitArray 中指定位置的位的值。 Length:获取或设置 BitArray 中的元素个数。
|
简单实用ArrayList:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections; namespace ConsoleApplication3
{
public class Student
{
public int nameNo { get; set; }
public string Name { get; set; }
public override string ToString()
{
return string.Format("{0}的学号是{1}", this.Name, this.nameNo);
}
}
public class Clazz:IEnumerable
{
public ArrayList students = new ArrayList();
public int AddNewStudent(Student stu)
{
return this.students.Add(stu);
}
// 实现GetEnumerator接口
public IEnumerator GetEnumerator()
{
foreach(object item in this.students)
{
yield return item;
}
}
}
class Program
{
static void Main(string[] args)
{
/*
* ============================== ArayList ==============================
// 使用ArrayList创建集合
ArrayList ab = new ArrayList(); // 创建一个集合
// 可以添加任何类型的东西
ab.Add("a");
ab.Add(123);
ab.Add(true);
// object类型
foreach (object item in ab)
{
Console.Write(item);
Console.Write("\t");
}
Console.WriteLine();
// 可以编译通过,但是执行会出错
*
foreach(int item in ab)
{
// 错误原因在于不是整型时,需要进行类型转换,解决办法通过类型转换即可,循环时先使用"object item",然后再"(int)item"进行类型转换
// 不过如果进行了类型转换就涉及到了一个新的问题,那就是装箱和拆箱的效率问题
Console.Write(item);
Console.Write("\t");
}
Console.WriteLine();*
// 计算个数
Console.WriteLine(ab.Count);
// 当然也可以通过下标进行访问
for (int i = 0; i < ab.Count; i++)
{
Console.Write(ab[i]);
Console.Write("\t");
}
Console.ReadKey();
*/
//////////////////////////////////////////////////
/*
// arraylist的另一种用法,对类进行操作
ArrayList al = new ArrayList();
al.Add(new Student() { nameNo = 1, Name = "小王" });
al.Add(new Student() { nameNo = 2, Name = "小李" });
al.Add(new Student() { nameNo = 5, Name = "小龙" });
foreach(object item in al)
{
Console.WriteLine(item);
}
Console.Clear(); // 清屏
System.Collections.Hashtable NoLIst = new Hashtable(); // 创建指定的序号进行排序
var s1 = new Student() { nameNo = 1, Name = "小也子" };
var s2 = new Student() { nameNo = 2, Name = "小青子" };
var s3 = new Student() { nameNo = 3, Name = "小岚子" };
var s4 = new Student() { nameNo = 4, Name = "小宝子" };
// 也可以获取前面的值
var s5 = al[2] as Student;
// 根据nameNo索引进行排序
NoLIst.Add(s1.nameNo, s1);
NoLIst.Add(s2.nameNo, s2);
NoLIst.Add(s3.nameNo, s3);
NoLIst.Add(s4.nameNo, s4);
NoLIst.Add(s5.nameNo, s5);
foreach(object item in NoLIst)
{
Console.WriteLine(item); // 输出"System.Collections.DictionaryEntry"
}
Console.Clear();
// 因为上面输出我们知道是"System.Collections.DictionaryEntry"类型
foreach(DictionaryEntry item in NoLIst)
{
Console.WriteLine("key:{0},value:{1}", item.Key, item.Value); // 输出
}
Console.Clear();
Student s = NoLIst[2] as Student; // 弱类型
Console.WriteLine("no:{0}, value:{1}", s.nameNo, s.Name);*/
//
// ==================================== IEnumerable =================================
/*
ArrayList al = new ArrayList();
al.Add(new Student() { nameNo = 1, Name = "小王" });
al.Add(new Student() { nameNo = 2, Name = "小李" });
al.Add(new Student() { nameNo = 5, Name = "小龙" });
IEnumerable enumer = al;
IEnumerator iet = enumer.GetEnumerator(); // 返回的是True或者false
// 往下一个元素移动
while (iet.MoveNext())
{
object currentItem = iet.Current; // 获取当前元素
Console.WriteLine(currentItem); // 输出当前元素
}*/
var s1 = new Student() { nameNo = , Name = "小也子" };
var s2 = new Student() { nameNo = , Name = "小青子" };
var s3 = new Student() { nameNo = , Name = "小岚子" };
var s4 = new Student() { nameNo = , Name = "小宝子" };
Clazz clazz = new Clazz();
clazz.AddNewStudent(s1);
clazz.AddNewStudent(s2);
clazz.AddNewStudent(s3);
clazz.AddNewStudent(s4);
// 1.Calzz没有继承IEnumerable
/*
* 报错,因为并没有包含IEnumerable
foreach(Student item in clazz)
{
//
}*/
// 2.Calzz继承IEnumerable,并实现GetEnumerator
IEnumerator iet3 = clazz.GetEnumerator();
while (iet3.MoveNext())
{
Console.WriteLine(iet3.Current);
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Collections; namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
/*
//============================================= SortList ===============================
SortedList sl = new SortedList(); // 初始化
// 添加健值
sl.Add("1", "bob1");
sl.Add("2", "bob2");
sl.Add("3", "bob3");
sl.Add("4", "bob4");
sl.Add("5", "bob5");
// 此外还有 sl.Contains(健)、sl.ContainsKey(健)
if (sl.ContainsValue("bob4"))
{
// 判断是否包含某些值
Console.WriteLine("已包含");
}
else
{
sl.Add("4", "bob4");
}
ICollection keys = sl.Keys; // 获取健的集合
ICollection values = sl.Values; // 获取所有值
foreach (string mykey in keys)
{
Console.Write(mykey+" ");
}
Console.WriteLine();
foreach (string myvalue in keys)
{
Console.Write(myvalue+" ");
}*/
//
/*
//================================== stack ================================
Stack sk = new Stack(); // 初始化
// 进堆
sk.Push("a1");
sk.Push("a2");
sk.Push("a3");
sk.Push("a4");
sk.Push("a5");
Console.WriteLine(sk.Count); // 获取堆的个数
*
// 遍历
foreach (string item in sk)
{
Console.Write(item + " ");
}*
//
// Console.WriteLine(sk.Peek()); // 获取顶部元素,但是不删除
//
// Console.WriteLine(sk.Pop()); // 弹出(并删除)一个顶部元素
*/
//
/*
//================================ queue ==========================
Queue que = new Queue(); // 初始化
que.Enqueue("bob1");
que.Enqueue("bob2");
que.Enqueue("bob3");
que.Enqueue("bob4");
que.Enqueue("bob5");
//
// Console.WriteLine(que.Count);
//
// que.Clear(); // 清空队列
*
//遍历队列
foreach (string mystr in que)
{
Console.Write(mystr+" ");
}
*
//Console.WriteLine(que.Dequeue()); // 弹出(并删除)头部队列
*/
//
//================================ BitArray ===================================
// 创建两个大小为8的点阵列
BitArray ba1 = new BitArray();
BitArray ba2 = new BitArray();
byte[] a = { };
byte[] b = { };
// 把60和13,添加到点阵列中
ba1 = new BitArray(a);
ba2 = new BitArray(b);
//Console.WriteLine(ba1.Count); // 获取元素数量
// 获取ba1的内容
for (int i = ; i < ba1.Count; i++)
{
Console.Write("{0,-6}", ba1[i]);
}
Console.WriteLine();
// 获取ba2的内容
for (int i = ; i < ba2.Count; i++)
{
Console.Write("{0,-6}", ba2[i]);
}
Console.WriteLine();
BitArray ba3 = new BitArray();
/*
ba3 = ba1.And(ba2); // 执行and运算
// 获取ba3的内容
for (int i = 0; i < ba3.Count; i++)
{
Console.Write("{0,-6}", ba3[i]);
}
Console.WriteLine();*/
ba3 = ba1.Or(ba2); // 进行or运算
for (int i = ; i < ba3.Count; i++)
{
Console.Write("{0,-6}", ba3[i]);
}
}
}
}
C# System.Collections的更多相关文章
- System.Collections.Generic的各容器类的用法
演示System.Collections.Generic的各容器类的用法. 包括:Dictionary,KeyValuePair,SortedDic tionary,SortedList,HashSe ...
- 异常:“System.Reflection.Metadata”已拥有为“System.Collections.Immutable”定义的依赖项
参考动态执行T4模板:https://msdn.microsoft.com/zh-cn/library/bb126579.aspx 我项目是.NET Framework 4.5控制台应用程序写的. 执 ...
- NHibernate无法将类型“System.Collections.Generic.IList<T>”隐式转换为“System.Collections.Generic.IList<IT>
API有一个需要实现的抽象方法: public IList<IPermission> GetPermissions(); 需要注意的是IList<IPermission>这个泛 ...
- 无法将类型为“System.Windows.Controls.SelectedItemCollection”的对象强制转换为类型“System.Collections.Generic.IList`1
在WPF中DataGrid 选择事件中获取SelectedItems 报错如下 无法将类型为“System.Windows.Controls.SelectedItemCollection”的对象强制转 ...
- Unity3d:Unknown type 'System.Collections.Generic.CollectionDebuggerView'1
问题描述:如图,在调试状态下说:Unknown type 'System.Collections.Generic.CollectionDebuggerView'1<ignore_js_op> ...
- 关于System.Collections空间
System.Collections命名空间包含可使用的集合类和相关的接口,提供了集合的基本功能. 该命名空间下的.NET非泛型集合类如下所示: — System.Collections.ArrayL ...
- using System.Collections.Generic;
public class CommonClass { public static void ShowInt(int iValue) { //typeof(CommonClass) typeof关键字 ...
- 使用泛型 类型“System.Collections.Generic.IEnumerator<T>”需要 1 个类型参数
解决办法:添加 using System.Collections:命名空间
- webservice asmx 无法序列化接口 System.Collections.Generic.IList
转载自:http://www.cnblogs.com/chenhuzi/p/4178194.html 今天有位同事在方法里加了一个IList<entity> 的返回值,也没有测试,直接发布 ...
- Web Service接口返回泛型的问题(System.InvalidCastException: 无法将类型为“System.Collections.Generic.List`1[System.String]”的对象强制转换为类型“System.String[]”)
在使用C#写Web Service时遇到了个很奇怪的问题.返回值的类型是泛型(我用的是类似List<string>)的接口,测试时发现总是报什么无法转换为对象的错误,百思不得其解. 后来在 ...
随机推荐
- Intellij IDEA xxx.properties变成纯文本模式解决方案
今天在创建xxx.properties的时候不知道按到了哪里,结果让它编程了纯文本模式,重命名这个文件或者删掉,重新创建这个同名文件,换一个项目,始终是文本文件类型,就估计不是项目问题,是intell ...
- swiper 父级元素display:none 之bug
问题描述: 同一个页面,点击底部tab按钮切换div的显示与隐藏,点击到第四个页面时 轮播图总是不动,出bug function start(){ var mySwiper = new Swiper( ...
- nginx申请并配置免费https
你还在让你的网站裸奔在网络上吗?在这里我们将搭建免费版HTTPS,免费的,免费的,免费的,重要的事情说三遍,申请来源为letsencrypt, 超文本传输协议HTTP协议被用于在Web浏览器和网站服务 ...
- 前端学习roadmap
- ubuntu下,python2.7安装mysqlldb驱动方法
安装依赖: sudo apt-get install libmysqlclient-dev libmysqld-dev python-dev python-setuptools 安装MySQLdb p ...
- 《Machine Learning Yearing》读书笔记
——深度学习的建模.调参思路整合. 写在前面 最近偶尔从师兄那里获取到了吴恩达教授的新书<Machine Learning Yearing>(手稿),该书主要分享了神经网络建模.训练.调节 ...
- redis安装linux(二)
官网地址:http://redis.io/ redis的安装 第一步:安装VMware,并且在VMware中安装centos系统(参考linux教程). 第二步:将redis的压缩包,上传到linux ...
- canvas绘制随机验证码
效果图: 思路: 1, 绘制canvas画布,进行基础设置 2.绘制一个矩形 3.设置验证码的随机数 4.设置验证码随机数的随机颜色 5.绘制随机干扰线 6,绘制随机干扰点 经过以上六个步骤,验证码的 ...
- Request对象和Response对象 JsonResponse对象 和 Django shortcut functions 和QueryDict对象
request request属性 属性: django将请求报文中的请求行.头部信息.内容主体封装成 HttpRequest 类中的属性. 除了特殊说明的之外,其他均为只读的. ''' 0.Http ...
- Linux_系统管理_网络配置_命令行配置网络
因为格了系统,重新安装了VMware,加载了原来的虚拟机后,因为VMware虚拟网卡Vmnet8的地址已经变了,所以要改变下客户操作系统的地址,结果搞了半天才搞定,这里记下来,希望能够为遇到这类问题的 ...