ArrayList list = new ArrayList();
之前学习过数组,相比较于数组,集合有两个优点。
数组:长度不可变,且类型单一。
集合:长度可以任意改变,且类型随便。
Person p = new Person();
list.Add(p);
我们将一个对象输出到控制台,默认情况下,打印的就是这个对象所在的类的命名空间。
添加单个元素:list.Add();
添加数组或者集合:list.AddRange();
清空所有元素:list.Clear();
删除单个元素,写谁删谁:list.Remove();
根据下标删除元素:list.RemoveAt();
升序排列:list.Sort();
反转:list.Reverse();
插入单个元素:list.Insert(1,"插入的");
在指定位置插入集合:list.InsertRange(0,new string[] { "zs", "ls" });
判断是否包含某个指定的元素:list.Contains();
list.Count:表示这个集合中实际包含的元素的个数
list.Capcity:表示这个集合中可以包含的元素的个数
每次集合中实际包含的元素个数count,超过了可以包含的元素个数capcity的时候,集合就会向内存申请多开辟一倍的空间,来保证集合的长度一直够用。
创建一个集合,里面添加一些数字,求平均值与和
ArrayList list = new ArrayList();
list.Add(1);
list.Add(2);
list.Add(3);
list.Add(4);
int sum = 0;
for (int i = 0; i < list.Count; i++)
{
sum += (int)list[i];
}
Console.WriteLine("和是{0},平均值是{1}", sum, sum / list.Count);
Console.ReadKey();
写一个长度为10的集合,要求在里面随机的存放10个数字(0-9),但是要求所有的数字不重复
ArrayList list = new ArrayList();
Random r = new Random();
for (int i = 0; i < 10; i++)
{
int rNumber = r.Next(0, 10);
if (!list.Contains(rNumber))
{
list.Add(rNumber);
}
else
{
i--;//一旦产生了重复的随机数,这次循环不算数
}
}
for (int i = 0; i < list.Count; i++)
{
Console.WriteLine(list[i]);
}
Console.ReadKey();
Hashtable ht = new Hashtable();
在键值对集合中,是根据键去找值的
键值对对象[键]=值;
**键值对集合中国,键必须是唯一的,值可以随意重复。
添加单个元素:ht.Add(键,值);
集合中没有这个键的时候可以这么添加数据
ht[6] = "zs";
如果有这个键,那么会干掉原来的值。
判断有无键:ht.ContainsKey();
清空所有元素:ht.Clear();
根据键移除:ht.Remove(键);
foreach(var item in ht.Key//value)
{
Console.WriteLine("键是====={0}====值是{1}",item,ht[item]);
}
c#是一门强类型语言,在代码中必须明确的定义每一个变量的类型。
var:推断类型,根据变量的值判断变量类型,必须赋初始值,用的少。
class Program
{
private const String Jian = "啊皑";
private const String Fan = "啊皚";
static void Main(string[] args)
{
Hashtable ht = new Hashtable();
for (int i = 0; i < Jian.Length; i++)
{
ht.Add(Jian[i], Fan[i]);
}
Console.WriteLine("请随便输入");
string input = Console.ReadLine();
for (int i = 0; i < input.Length; i++)//遍历用户输入的字符串,将每一个字符都转换成繁体字
{
if (ht.ContainsKey(input[i]))
{
Console.Write(ht[input[i]]);
}
else
{
Console.Write(input[i]);
}
}
Console.ReadKey();
}
}
List<变量类型> 集合名 = new List<变量类型>;
泛型集合用来存储相同类型的数据。
List泛型集合可以转换为数组
int[] nums = list.ToArray();
数组转换成集合
List
Dictionary<键类型,数据类型> 集合名 = new Dictionary<键类型,数据类型>();
这个集合是键值对集合的一种,专门用指定类型的键来存储指定类型的数据
取这个集合中的值同样使用foreach循环
foreach (KeyValuePair kv in dic)
{
Console.WriteLine("{0}----{1}", kv.Key,kv.Value);
}
Console.ReadKey();
将一个数组中的奇数放到一个集合中,再将偶数放到另一个集合中,
最终将两个集合合并为一个集合,并且奇数显示在左边,偶数在右边。
int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 };
List listone = new List();
List listtwo = new List();
for (int i = 0; i < nums.Length; i++)
{
if (nums[i] % 2 == 0) //是偶数
{
listtwo.Add(nums[i]);
}
else//是奇数
{
listone.Add(nums[i]);
}
}
listone.AddRange(listtwo);
foreach (int item in listone)
{
Console.Write(item + " ");
}
Console.ReadKey();
提示用户输入一个字符串,通过foreach循环将用户输入的字符串赋值给一个字符数组
Console.WriteLine("请输入一个字符串");
string input = Console.ReadLine();
char[] chs = new char[input.Length];
int i = 0;
foreach (var item in input)
{
chs[i] = item;
i++;
}
foreach (var item in chs)
{
Console.WriteLine(item);
}
Console.ReadKey();
统计welcome to china 中每个字符出现的次数,不考虑大小写
字符---->出现的次数
键------>值
string str = "welcome to china";
Dictionary dic = new Dictionary();
for (int i = 0; i < str.Length; i++)
{
if(str[i]==' ')
{
continue;
}
//如果dic已经包含了当前循环到的键,值加1
if (dic.ContainsKey(str[i]))
{
dic[str[i]]++;
}
else//这个集合中第一次出现这个键
{
dic[str[i]] = 1;
}
}
foreach (KeyValuePair kv in dic)
{
Console.WriteLine("{0}出现了{1}次", kv.Key,kv.Value);
}
Console.ReadKey();