ArrayList集合
数组的缺点:
(1).数组只能存储相同类型的数据.
(2).数组的长度要在定义时确定.
集合的好处:
(1).集合可以存储多种不同类型的数据.
(2).集合的长度是可以任意改变的.
ArrayList的实例代码01:
namespace _01.ArrayList集合的学习
{
class Program
{
static void Main(string[] args)
{
ArrayList list = new ArrayList();
list.Add("张三");
list.Add(18);
list.Add('男');
for (int i = 0; i < list.Count; i++)
{
Console.WriteLine(list[i]);
}
Console.ReadKey();
}
}
}
ArrayList的实例代码02:
namespace _05.ArrayList集合的学习
{
class Program
{
static void Main(string[] args)
{
ArrayList list = new ArrayList();
list.Add("张三");
list.Add(18);
list.Add('男');
Person p1 = new Person();
list.Add(p1);
list.Add(new int[] { 1, 2, 3, 4, 5, 6, 7, 8 });
for (int i = 0; i < list.Count; i++)
{
if (list[i] is Person)
{
((Person)list[i]).SayHello();
}
else if (list[i] is Int32[])
{
for (int j = 0; j < ((Int32[])list[i]).Length; j++)
{
Console.Write(((Int32[])list[i])[j]+" ");
}
}
else
{
Console.WriteLine(list[i]);
}
}
Console.ReadKey();
}
}
public class Person
{
public void SayHello()
{
Console.WriteLine("我是人类!");
}
}
}
由上面代码我们发现了一个问题,就是我们向ArrayList集合中添加数据时很爽,但是我们往外面拿数据就很不爽了,涉及到转换.
ArrayList集合的常用方法:
.Add(); //添加单个元素
.AddRange(); //添加一个集合/数组
.Clear(); //移除ArrayList集合中所有的元素
.remove("想要移除的元素"); //移除ArrayList集合中指定的元素
.removeAt("下标"); //移除ArrayList集合中指定下标的元素
.removeRange("开始下标","移除个数"); //移除ArrayList集合中从指定下标开始,指定个数的移除.
.Sort(); //升序的排序ArrayList集合中的数据 注意: ArrayList集合中的数据类型必须是一样的才能排序
.reverse(); //反转ArrayList集合中的元素
.Insert(); //在指定下标处插入数据. 插入单个元素
.insertRange(); //在ArrayList集合指定的下标处插入,一个集合/数组
.contains(); //判断ArrayList集合中是否包含有某一个元素
ArrayList集合的两个属性:
conut //表示这个集合中实际包含的元素的个数
capcity //表示这个集合中可以包含的元素的个数
每次集合中实际包含的元素个数(count)超过可以包含的元素个数(capcity)的时候,集合就会
向内存中申请多开辟一倍的空间,来保证集合的长度一直够用.
ArrayList集合的两个练习: 练习1
namespace _07.ArrayList集合的两个练习01
{
class Program
{
static void Main(string[] args)
{
//1.创建一个集合,里面添加一些数字,求平均值与和
ArrayList list = new ArrayList();
list.Add(12);
list.Add(11);
list.Add(3);
list.AddRange(new int[] { 1, 2, 3 });
int sum = 0;
int avg = 0;
for (int i = 0; i <list.Count; i++)
{
if (list[i] is Int32)
{
sum += (int)list[i];
}
}
avg = sum / list.Count;
Console.WriteLine("和为{0},平均值为:{1}.",sum,avg);
Console.ReadKey();
}
}
}
ArrayList集合的两个练习: 练习2
namespace _08.ArrayList集合的两个练习02
{
class Program
{
static void Main(string[] args)
{
//写一个长度为10的集合,要求在里面随机的存放10个数字(0~9)
//但是要求所有的数字不重复
int s = 0;
int rNumber = 0;
Random r = new Random();
ArrayList list = new ArrayList();
rNumber = r.Next(0, 10);
while (s<=9)
{
rNumber = r.Next(0, 10);
if (!list.Contains(rNumber))
{
list.Add(rNumber);
s++;
}
}
for (int j = 0; j < list.Count; j++)
{
Console.WriteLine(list[j]);
}
Console.ReadKey();
}
}
}
ToSting();的相关问题:
我们将一个对象输出到控制台,默认情况下,打印的就是这个对象所在的类的命名空间.
例如:
namespace _04.ToShing__的相关问题
{
class Program
{
static void Main(string[] args)
{
//我们将一个对象输出到控制台 默认情况下 打印的就是这个对象所在的类的命名空间.
int[] numbers = { 1,2,3,4,5,6,7,8};
Console.WriteLine(numbers);
Console.ReadKey();
}
}
}
HashTable集合 (键值对集合)
(1).在键值对集合中是根据键去找值的.
键值对对象[键]=值;
在键值对集合当中,键必须是唯一的,但是,值是可以重复的.
因为for循环都是根据整数进行循环的,所以在键值对集合中是无法使用的.
那么我们想要遍历输出键值对集合怎么办呢?
使用foreach循环来遍历
var的相关问题;
//var
//C#是一门强类型的语言
//php是一门强类型的语言
什么是强类型?
在代码中必须对每一个变量的类型有一个类型的明确定义.
比如:
int n=15; //int就是一个明确的定义
什么是弱类型?
即在代码中不需要对变量的类型有一个明确的定义.
var可以根据变量的类型来推断它是属于什么类型.
var的缺陷:
我们在使用var类型 去声明变量的时候,必须在声明的同时为var声明的变量赋值,
因为,如果没有在声明的时候,为var 声明的变量赋值,var根本不知道这个变量是什么
类型,导致报错.
仔细阅读下列代码:
namespace _10.var的相关问题
{
class Program
{
static void Main(string[] args)
{
string name = "张三";
double d1 = 3.1415d;
decimal d2 = 1.5555m;
char c= '男';
Console.WriteLine(name.GetType());
Console.WriteLine(d1.GetType());
Console.WriteLine(d2.GetType());
Console.WriteLine(c.GetType());
Console.WriteLine("==============================");
var name1 = "张三";
var d11 = 3.1415d;
var d21 = 1.5555m;
var c1 = '男';
Console.WriteLine(name1.GetType());
Console.WriteLine(d11.GetType());
Console.WriteLine(d21.GetType());
Console.WriteLine(c1.GetType());
//根据以上代码我们发现两种写法是一样的,那到底有什么区别呢?
//区别:
string input;
input = "张三"; //这是我们经常写的代码 没有任何问题
//var input1; //这里已经报错了,因为input1没有被赋值,var根本推断不出来input1是什么类型.
input1 = "李四";
Console.ReadKey();
}
}
}
总结:
var是一个推断类型,即根据变量的值,推断变量的类型.
var 变量在声明的时候,必须就为其赋值,否则报错.
foreach循环
•语法:
•foreach(集合中单个的类型 局部变量名 in 集合对象)
•{
–// 循环体
–// 循环体当中“局部变量”表示集合中遍历的数据
•}
•循环的过程(重点)
•总是从开始,一直循环到结束,中间不会停下来,除了break
•临时变量,可以为其赋值吗?数组或集合中的数据会受到影响吗?
•常规下,数组或集合此时是只读的
•临时变量的类型
•设断点查看
•使用var判断
namespace _11.foreach循环的学习
{
class Program
{
static void Main(string[] args)
{
int[] number = {1,2,3,4,54,5,6,7,5,4,3,2,45,3,2,5,2,43,52,2 };
//使用foreach循环对number数组进行遍历
foreach (int item in number)
{
Console.Write(item+",");
}
Console.ReadKey();
}
}
}
foreach循环的效率高于for循环的效率