ArrayList

      集合:很多数据的一个集合       数组:长度不可变、类型单一

集合的好处:长度可以任意改变  类型随便

集合长度都的问题   很多数据的集合数组类型不可变 长度单一

     ArrayList  list=new  ArrayList ; 它不是静态的,我们可以尝试的创建一个对象 
           //创建了一个集合对象
            ArrayList list = new ArrayList();
            //集合:很多数据的一个集合
            //数组:长度不可变、类型单一
            //集合的好处:长度可以任意改变  类型随便

 namespace _02集合
{
class Program
{
static void Main(string[] args)
{
ArrayList list = new ArrayList();
list.Add();
list.Add(3.14);
list.Add(true );//bool
list.Add("李白");//string
list.Add('男');//char
list.Add(new int[] { , , , , , , , });
list.AddRange(new int[] { , , , , });//AddRange表示添加一个集合
list.Add(list );//自己放自己,没意义
for (int i = ; i <list.Count; i++)//Count实际包含的元素个数
{
if(list[i] is person )//如果它能转换成Person类型
{
((person)list[i]).say();//强转的前提:必须装有子类对象 有继承关系
}
else if (list[i]is int[])
{
for (int j = ; j<((int[])list[i]).Length ; j++)
{
Console.WriteLine(((int [])list[i])[j]);
}
}
else
{
Console.WriteLine(list[i]);
} }
}

ArrayLit集合长度的问题

// 每次集合中实际包含的元素个数(count)超过了可包含元素的个数capcity
  //的时候集合就会向内存中申请多开启一倍的空间,来保证集合长度够用


  static void Main(string[] args)
{
ArrayList list = new ArrayList();
list.Add();
list.Add();
list.Add();
list.Add();
list.Add();
list.Add();
list.Add();
Console.WriteLine(list .Count);//
Console.WriteLine(list .Capacity);//0
//count 表示这个集合的元素实际包含的个数
//capcity 表示这个集合的元素可包含的个数
Console.ReadKey(); }
}
class person
{
public void say()
{
Console.WriteLine("海");
}
}
}

 

两个练习   创建一个集合,里面添加一些数字,求平均和和 最大值

     //创建一个集合,里面添加一些数字,求平均和和 最大值
#region MyRegion
//ArrayList list = new ArrayList();
//list.AddRange(new int[]{1,2,3,4,5});
//int sum=0;
//int max=(int )list [0];
//for (int i = 0; i < list .Count ; i++)
//{
// if ((int)list [i]>max )
// {
// max =(int)list[i] ;
// }
// sum += (int)list[i];//转为int
// //为什么能将一个object类型转为int类型
// //因为你父类装的是子类对象,里氏转换
//}
//Console.WriteLine(sum);
//Console.WriteLine(sum/list.Count);
//Console.WriteLine(max);
//Console.ReadKey();
#endregion

//写一个长度为10的集合,要求在里面随机地存放10个数字//但是要求所有的数字不重复

   #region MyRegion
ArrayList list = new ArrayList();
Random r = new Random();
for (int i = ; i < ; i++)
//为什么不能写list.Count Count表示实际包含的个数(0)条件不成立
//循环不执行
{
int rNumber = r.Next(, );
//集合中没有这个随机数
if (!list.Contains(rNumber))//不包含
{
list.Add(rNumber);
}
else//集合中有这个随机数
{
//一旦产生了重复的随机数,这次循环就不算数
i--;
}
}
for (int i = ; i < list.Count; i++)
{
Console.WriteLine(list[i]);
}
Console.ReadKey();
#endregion

//将一个数组中的奇数放到一个集合中 ,偶数放左边一个集合 最终放右边一个集合

 //将一个数组中的奇数放到一个集合中 ,偶数放左边一个集合 最终放右边一个集合
#region MyRegion
int[] number = { , , , , , , , };
//奇数集合
List<int> lisji = new List<int>();
//偶数集合
List<int> lisou = new List<int>();
for (int i = ; i < number.Length; i++)
{
if (number[i] % == )
{
lisou.Add(number[i]);
}
else
{
lisji.Add(number[i]);
}
}
////合并一个集合 在声明一个新集合
//List<int> listsum = new List<int>();
//listsum.AddRange(lisji);
//listsum.AddRange(lisou); //直接让一个集合去添加另一个集合
//lisou.AddRange(lisji);
//foreach (var item in lisou )
//{
// Console.Write(item+" ");
//}
//Console.ReadKey(); //谁在最前边就让谁去添加类型一个
lisji.AddRange(lisou);
foreach (var item in lisji)
{
Console.Write(item + " ");
}
Console.ReadKey();
#endregion

//提示用户输入一个字符串 ,通过foreach循环将用户输入的字符串赋值 给一个字符数组

             //提示用户输入一个字符串 ,通过foreach循环将用户输入的字符串赋值 给一个字符数组
#region MyRegion
Console.WriteLine("请输入一个字符串");
string input = Console.ReadLine();
char[] chs = new char[input.Length];
int i = ;
//把字符串给数组你首先要拿到字符串中每个元素
foreach (var item in input)//collection要循环访问的数组和名称
{
chs[i] = item;//赋值给char类型的数组
//item:是input每一个元素,
i++;//每赋值一次i++
}
foreach (var item in chs)
{
Console.Write(item);
}
Console.ReadKey();
#endregion

最新文章

  1. MAC OS升级到10.11(OS X EICAPTION)之后CocoaPods不能正常使用的问题解决
  2. 用ARCGIS配出一张DEM专题图
  3. JMeter压力测试入门教程[图文]
  4. Java编程思想——初始化与清理
  5. android 全屏视频播放(SurfaceView + MediaPlayer)
  6. Java 反射 ParameterizedType 参数化类型
  7. 【NOIP2008】双栈排序
  8. RedHat升级内核成功
  9. QNX简介&lt;转载&gt;
  10. JAVA在IO流量汇总
  11. [SinGuLaRiTy] 组合数学
  12. 一个全局变量引起的DLL崩溃
  13. Markdown常用语法对应
  14. DEDECMS点击主栏目默认显示第一个子栏目列表的方法
  15. 简约才是王道? CardView 的使用
  16. 传输层的端口与TCP标志中的URG和PSH位
  17. Unity-使用面向对象的思想
  18. python 全栈开发,Day134(爬虫系列之第1章-requests模块)
  19. Css控制网页变灰
  20. 模仿SDWebImage实现异步加载图片

热门文章

  1. 洛谷P2761 软件补丁问题(状压dp)
  2. 洛谷P2756 飞行员配对方案问题(二分图匹配)
  3. 跟我一起读postgresql源码(四)——Planer(查询规划模块)(上)
  4. CentOS 7 基础网络配置
  5. 洛谷 P1477 [NOI2008]假面舞会
  6. POJ_3090 Visible Lattice Points 【欧拉函数 + 递推】
  7. opencv基本操作
  8. 使用navicat for mysql图形界面操作数据库、使用node.js操作数据库写接口
  9. 网络知识之ipset
  10. 2019.3.26 SQL语句(进阶3)