看到这个标题,大家一定会感到很好奇,什么是小容器呢?为什么是四个呢?其实这里要给大家讲解的是c#里面的四个函数,这四个函数可以容纳不同类型的数据,拥有很强大的功能,接下来让我们走进去看一看,它们到底是什么呢?
第一个容器——Arraylist
一、优势:
1、可以容纳各种类型的数据,可以放int\string\char等等
2、不用定义它的大小
二、基本方法
arraylist.clear——清空
arraylist.contains(元素);——判断这个集合中是否包含这个元素,返回一个布尔值
arraylist.indexof(索引);——找某一个元素对应的索引
arraylist.insertRange(数字,数组);——往某一个索引位置插入一个数组
arraylist.Remove();——移除某个元素,只能移除一个
arraylist.RemoveAt(索引);——移除索引对应的值
arraylist.RemoveRange(数字,数字);——从指定索引处开始移除,移除多少个,如果超出索引报异常
举例:
求1到100的总和以及平均数,用集合的方法
ArrayList arraylist = new ArrayList();
int sum = 0;
for(int i=1;i<=100; i++)
{
arraylist.Add(i);//往集合中添加数据
}
for(int i=0;i<arraylist.Count;i++)
{
if(arraylist[i] is int)
{
sum += (int)arraylist[i];
}
}
double avg = sum * 1.0 / arraylist.Count;
Console.WriteLine("总和为{0},平均值为{1}", sum, avg);
Console.ReadKey();
第二个容器——哈希表
特点:
1、哈希表的输出是无序的
2、哈希表的添加是以键值对的形式添加的,每一个键都对应一个value
3、添加的键不能重复
4、可以添加各种类型的键
5、可以用“键名[]”这个语法结构来显示键的value值
6、遍历用foreach
7、需要添加命名空间
举例:
Hashtable ht = new Hashtable();
//哈希表以键值对的形式存值 key----键 value------值
ht.Add("老苏", "001");
ht.Add("小马", 002);
ht.Add(003, "老牛");
ht.Add("小赵", "老马");
//ht.Add("小赵", 122);//运行时会报异常,原因是上一句已经存在“小赵”这个键值了,所以不能重复添加了
//显示 ht[]用来显示value的值
Console.WriteLine("{0}=========={1}", "老苏", ht["老苏"]);
//遍历哈希表,将其中的内容全都显示出来
foreach(var str in ht.Keys)
{
Console.WriteLine("key{0},------value{1}", str, ht[str]);
}
Console.WriteLine("添加成功了");
Console.ReadKey();
第三个容器——List
特点:
1、list内部只能放入已经实例化的类型,不能放入其他类型
2、可以求和、求最大值、求平均值
举例:随机的往这个list集合中添加10个数据,求和,求最大值,求平均值
List<int> list = new List<int>();
Random r = new Random();
int num = 0;
while(list.Count!=10)
{
num = r.Next(1, 100);
if(!list.Contains(num))
{
list.Add(num);
}
}
Console.WriteLine("最小值为{0}", list.Min());
Console.WriteLine("最大值为{0}", list.Max());
Console.WriteLine("总和为{0}", list.Sum());
Console.WriteLine("平均值为{0}", list.Average());
Console.ReadKey();
第四个容器——Dictionary
特点:
1、用foreach遍历
2、添加数据也是以键值对的形式
具体的方法,请看下面的小栗子
#region 拆字
private const string ChaiZiZK = "卧臣卜 项工页 功工力 到至刂";
#endregion
static void Main(string[] args)
{
Dictionary<char, string> mydic = new Dictionary<char, string>();
//切割拆字里面的空格
string[] chaizi = ChaiZiZK.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
//遍历字典,并且判断拆字里面是否包含
for(int i=0;i<chaizi.Length;i++)
{
if(!mydic.ContainsKey(chaizi[i][0]))
{
mydic.Add(chaizi[i][0], chaizi[i].Substring(1));
}
}
# region 文章
string text = "传智博客有个帅哥叫小杨,小样很帅,很纯洁,是个著名的大帅哥。帅到什么程度呢,他每次讲课,总是引起一堆怀春少女";
#endregion
//遍历输出
for(int i=0;i<text.Length;i++)
{
if(mydic.ContainsKey(text[i]))
{
Console.Write(mydic[text[i]]);
}
else
{
Console.Write(text[i]);
}
}
Console.ReadKey();
四个容器之间的异同点:
1、Arraylist和list都可以添加数据,数据的个数不受限制
2、dictionary和list都不用导入命名空间,都确定了存数据的类型
3、dictionary和hashtable都是以键值对的形式存值,方法也都很相似
4、arraylist和hashtable都要导入命名空间,存的数据不限制类型
5、四个都可以用foreach遍历,存数据的个数都不受限制