using System;
using System.Collections;//非泛型集合
using System.Collections.Generic;//泛型集合
namespace -----------------------------------队列--------------------------------------
{
class Student
{
int age;
string name;
public Student(string name,int age)
{
this.name = name;
this.age = age;
}
public override string ToString()
{
return string.Format("姓名:{0},年龄:{1}", name, age);
}
}
class Program
{
//foreach循环的本质
public static void printCollection(IEnumerable ie)
{
IEnumerator it = ie.GetEnumerator();
while (it.MoveNext())
{
Console.WriteLine(it.Current);
}
}
static void Main(string[] args)
{
Queue queue = new Queue();
//往队列中添加数据:Enqueue函数
queue.Enqueue(1);
queue.Enqueue("hello");
queue.Enqueue('a');
queue.Enqueue(true);
Student s = new Student("xiaoming", 20);
queue.Enqueue(s);
Console.WriteLine("队列中的元素个数:" + queue.Count);
Console.WriteLine("使用迭代器访问队列中的内容:");
printCollection(queue);
Console.WriteLine("使用数组方式访问队列中的内容:");
object[] objs= queue.ToArray();
for (int i = 0; i < objs.Length; i++)
{
Console.WriteLine(objs[i]);
}
//查看队首元素(不删除数据)
Console.WriteLine("队首元素:"+queue.Peek());
//删除队列中的元素(只能从队首删除)
object delObj= queue.Dequeue();
Console.WriteLine("从队首删除的元素是:"+delObj);
queue.Dequeue();
queue.Dequeue();
Console.WriteLine("队列中的元素个数:" + queue.Count);
printCollection(queue);
//用来判断一个元素是否在队列中:Contains
if (queue.Contains(s))
{
Console.WriteLine("s对象在队列中");
}
//删除队列中所有的元素
queue.Clear();
Console.WriteLine("队列中的元素个数:" + queue.Count);
//泛型队列(安全,避免装箱拆箱操作)
Queue<int> queueInt = new Queue<int>();
queueInt.Enqueue(1);
for (int i = 0; i < 10; i++)
{
queueInt.Enqueue(i);
}
printCollection(queueInt);
Console.ReadKey();
}
}
}
namespace ---------------------------------- 栈------------------------------
{
class Program
{
public static void printCollection(IEnumerable ie)
{
IEnumerator it = ie.GetEnumerator();
while (it.MoveNext())
{
Console.WriteLine(it.Current);
}
}
static void Main(string[] args)
{
Stack stack = new Stack();
//往栈中压入数据
stack.Push(1);
stack.Push("hello1");
stack.Push("hello2");
stack.Push("hello3");
//查看栈顶数据
object objUp= stack.Peek();
Console.WriteLine("栈顶元素:"+objUp);
//查找栈中元素个数
Console.WriteLine("栈中元素个数:"+stack.Count);
//删除元素(弹栈)
object delObj= stack.Pop();
Console.WriteLine("从栈顶弹出了一个数据:" + delObj);
printCollection(stack);
//泛型栈
Stack<int> stackInt = new Stack<int>();
for(int i=0;i<10;i++)
{
stackInt.Push(i);
}
stackInt.Pop();
stackInt.Pop();
stackInt.Pop();
Console.WriteLine("栈中元素个数:" + stackInt.Count);
printCollection(stackInt);
Console.ReadKey();
}
}
}
namespace --------------------------------列表------------------------------
{
class Program
{
static void Main(string[] args)
{
//数组
Array array = Array.CreateInstance(typeof(int), 10);
//列表
ArrayList list0 = new ArrayList();
for(int i=0;i<5;i++)
{
list0.Add(10+i);
}
ArrayList list = new ArrayList();//默认为空
//获取列表中元素的数量(属性Count)
Console.WriteLine("列表list容器的大小:" + list.Count);
list.Clear();//清理容器中所有的数据
//1、往容器中添加数据
list.Add(100);//下标0
list.Add(3.14);//装箱
list.Add("hello");
list.Add(true);
list.Add(new int[] { 1, 2, 3, 4, 5 });//添加一个对象到容器中
list.AddRange(new int[] { 1, 2, 3, 4, 5 });//添加一个对象到容器中
list.AddRange(list0);//添加某个容器中的所有内容到当前容器中
list.AddRange(new string[] {"hello1","hello2","hello3"});
//修改或者访问数组中元素
list[1] = 200;//和数组访问方式一样(不能越界)
list[0] = 99999;
//2、插入数
list.Insert(0, 666);
//3、删除元素
list.Remove("hello");//通过对象直接删除
list.RemoveAt(list.Count-1);//通过下标删除对应位置的元素
//4、输出容器中所有的元素(访问数据)
foreach (var item in list)
{
Console.WriteLine(item);
}
//二 泛型列表
//和ArrayList一样,自动扩容
List<int> listInt = new List<int>();//只能存int,没有装箱和拆箱,安全
for (int i = 0; i < 10; i++)
{
listInt.Add(i);
}
listInt.RemoveAt(0);
foreach (var item in listInt)
{
Console.WriteLine(item);
}
Console.ReadKey();
}
}
}
namespace ---------------------------哈希表------------------------------
{
class Program
{
static void Main(string[] args)
{
Hashtable tb = new Hashtable();
//往表中添加数据(一对)
tb.Add("北京", "小雨");
tb.Add("上海", "多云");
tb["长沙"] = "晴天";//和List不一样,容器中没有该键,添加
tb["广州"] = "晴转多云";
//获取容器中元素个数(几对)
Console.WriteLine("表中元素个数:"+tb.Count);
//删除表中的元素(一对)
tb.Remove("北京");
tb.Remove("xian");//删除一个不存在的key-value,不影响(不报错)
//tb.Remove(null);//删除的key不能为null,会抛出异常
Console.WriteLine("表中元素个数:" + tb.Count);
//查找value(通过key)
string result = (string)tb["shanghai"];
Console.WriteLine("key:{0}对应的值:{1}","shanghai",result);
//查找所有的key
Console.WriteLine("tb中所有的key:");
foreach (var item in tb.Keys)
{
Console.Write(item+",");
}
//查找所有的value
Console.WriteLine("\ntb中所有的value:");
foreach (var item in tb.Values)
{
Console.Write(item + ",");
}
//查找所有的key,value
//注意:哈希表中里面的数据的顺序跟添加的先后顺序无关,随机性
Console.WriteLine("\ntb中所有的key和value:");
foreach (DictionaryEntry item in tb)//DictionaryEntry不能改成var
{
Console.WriteLine(item.Key+"-"+item.Value);
}
//判断某个键是否存在
if (tb.ContainsKey("北京"))
//if (tb.Contains("北京"))
{
Console.WriteLine("容器中存在key:北京");
}
else
{
Console.WriteLine("容器中不存在key:北京");
}
if(tb.ContainsValue("小雨"))
{
Console.WriteLine("容器中存在value:小雨");
}
else
{
Console.WriteLine("容器中存在value:小雨");
}
----------------------------字典---------------------------------
Dictionary<int, string> dic = new Dictionary<int, string>();
//字典中存储数据
for (int i = 0; i < 10; i++)
{
dic.Add(i, "hello" + i);
}
dic[10] = "hello10";
Console.WriteLine("字典dic中元素个数:"+dic.Count);
//删除数据
dic.Remove(0);
dic.Remove(1);
Console.WriteLine("字典dic中元素个数:" + dic.Count);
//获取某个键对应的值(通过索引方式)
Console.WriteLine("dic[5]="+ dic[5]);
//获取所有的键
Dictionary<int, string>.KeyCollection keys= dic.Keys;
var keys1 = dic.Keys;
Console.WriteLine("字典dic中所有的key:");
foreach (var item in keys1)
{
Console.Write(item+",");
}
//获取所有的值
Dictionary<int, string>.ValueCollection values = dic.Values;
var values1 = dic.Values;
Console.WriteLine("\n字典dic中所有的value:");
foreach (var item in values1)
{
Console.Write(item + ",");
}
//获取所有的键值对
Console.WriteLine("\n字典dic中所有的键值对:");
//foreach (var item in dic)
foreach (KeyValuePair<int, string> item in dic)
{
Console.WriteLine(item.Key + "--"+item.Value);
}
//判断字典中某个键是否存在,没有Contains函数(Hashtable中有)
if(dic.ContainsKey(10))
{
Console.WriteLine("字典dic中包含键10");
}
//判断字典中某个值是否存在
if (dic.ContainsValue("hello10"))
{
Console.WriteLine("字典dic中包含值hello10");
}
Console.ReadKey();
数据结构分析https://www.cnblogs.com/murongxiaopifu/p/4161648.html