ArrayList集合


数组的缺点:
(1).数组只能存储相同类型的数据.
(2).数组的长度要在定义时确定.

集合的好处:
(1).集合可以存储多种不同类型的数据.
(2).集合的长度是可以任意改变的.

ArrayList的实例代码01:
  1. namespace _01.ArrayList集合的学习
  2. {
  3. class Program
  4. {
  5. static void Main(string[] args)
  6. {
  7. ArrayList list = new ArrayList();
  8. list.Add("张三");
  9. list.Add(18);
  10. list.Add('男');
  11. for (int i = 0; i < list.Count; i++)
  12. {
  13. Console.WriteLine(list[i]);
  14. }
  15. Console.ReadKey();
  16. }
  17. }
  18. }
ArrayList的实例代码02:
  1. namespace _05.ArrayList集合的学习
  2. {
  3. class Program
  4. {
  5. static void Main(string[] args)
  6. {
  7. ArrayList list = new ArrayList();
  8. list.Add("张三");
  9. list.Add(18);
  10. list.Add('男');
  11. Person p1 = new Person();
  12. list.Add(p1);
  13. list.Add(new int[] { 1, 2, 3, 4, 5, 6, 7, 8 });
  14. for (int i = 0; i < list.Count; i++)
  15. {
  16. if (list[i] is Person)
  17. {
  18. ((Person)list[i]).SayHello();
  19. }
  20. else if (list[i] is Int32[])
  21. {
  22. for (int j = 0; j < ((Int32[])list[i]).Length; j++)
  23. {
  24. Console.Write(((Int32[])list[i])[j]+" ");
  25. }
  26. }
  27. else
  28. {
  29. Console.WriteLine(list[i]);
  30. }
  31. }
  32. Console.ReadKey();
  33. }
  34. }
  35. public class Person
  36. {
  37. public void SayHello()
  38. {
  39. Console.WriteLine("我是人类!");
  40. }
  41. }
  42. }

由上面代码我们发现了一个问题,就是我们向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
  1. namespace _07.ArrayList集合的两个练习01
  2. {
  3. class Program
  4. {
  5. static void Main(string[] args)
  6. {
  7. //1.创建一个集合,里面添加一些数字,求平均值与和
  8. ArrayList list = new ArrayList();
  9. list.Add(12);
  10. list.Add(11);
  11. list.Add(3);
  12. list.AddRange(new int[] { 1, 2, 3 });
  13. int sum = 0;
  14. int avg = 0;
  15. for (int i = 0; i <list.Count; i++)
  16. {
  17. if (list[i] is Int32)
  18. {
  19. sum += (int)list[i];
  20. }
  21. }
  22. avg = sum / list.Count;
  23. Console.WriteLine("和为{0},平均值为:{1}.",sum,avg);
  24. Console.ReadKey();
  25. }
  26. }
  27. }
ArrayList集合的两个练习:   练习2
  1. namespace _08.ArrayList集合的两个练习02
  2. {
  3. class Program
  4. {
  5. static void Main(string[] args)
  6. {
  7. //写一个长度为10的集合,要求在里面随机的存放10个数字(0~9)
  8. //但是要求所有的数字不重复
  9. int s = 0;
  10. int rNumber = 0;
  11. Random r = new Random();
  12. ArrayList list = new ArrayList();
  13. rNumber = r.Next(0, 10);
  14. while (s<=9)
  15. {
  16. rNumber = r.Next(0, 10);
  17. if (!list.Contains(rNumber))
  18. {
  19. list.Add(rNumber);
  20. s++;
  21. }
  22. }
  23. for (int j = 0; j < list.Count; j++)
  24. {
  25. Console.WriteLine(list[j]);
  26. }
  27. Console.ReadKey();
  28. }
  29. }
  30. }



ToSting();的相关问题:
我们将一个对象输出到控制台,默认情况下,打印的就是这个对象所在的类的命名空间.
例如:
  1. namespace _04.ToShing__的相关问题
  2. {
  3. class Program
  4. {
  5. static void Main(string[] args)
  6. {
  7. //我们将一个对象输出到控制台 默认情况下 打印的就是这个对象所在的类的命名空间.
  8. int[] numbers = { 1,2,3,4,5,6,7,8};
  9. Console.WriteLine(numbers);
  10. Console.ReadKey();
  11. }
  12. }
  13. }


HashTable集合 (键值对集合)
(1).在键值对集合中是根据键去找值的.
键值对对象[键]=值;
在键值对集合当中,键必须是唯一的,但是,值是可以重复的.

因为for循环都是根据整数进行循环的,所以在键值对集合中是无法使用的.
那么我们想要遍历输出键值对集合怎么办呢?
使用foreach循环来遍历


var的相关问题;
//var
//C#是一门强类型的语言
//php是一门强类型的语言
什么是强类型?
在代码中必须对每一个变量的类型有一个类型的明确定义.
比如:
int n=15;     //int就是一个明确的定义
什么是弱类型?
即在代码中不需要对变量的类型有一个明确的定义.
var可以根据变量的类型来推断它是属于什么类型.

var的缺陷:
我们在使用var类型 去声明变量的时候,必须在声明的同时为var声明的变量赋值,
因为,如果没有在声明的时候,为var 声明的变量赋值,var根本不知道这个变量是什么
类型,导致报错.

仔细阅读下列代码:
  1. namespace _10.var的相关问题
  2. {
  3. class Program
  4. {
  5. static void Main(string[] args)
  6. {
  7. string name = "张三";
  8. double d1 = 3.1415d;
  9. decimal d2 = 1.5555m;
  10. char c= '男';
  11. Console.WriteLine(name.GetType());
  12. Console.WriteLine(d1.GetType());
  13. Console.WriteLine(d2.GetType());
  14. Console.WriteLine(c.GetType());
  15. Console.WriteLine("==============================");
  16. var name1 = "张三";
  17. var d11 = 3.1415d;
  18. var d21 = 1.5555m;
  19. var c1 = '男';
  20. Console.WriteLine(name1.GetType());
  21. Console.WriteLine(d11.GetType());
  22. Console.WriteLine(d21.GetType());
  23. Console.WriteLine(c1.GetType());
  24. //根据以上代码我们发现两种写法是一样的,那到底有什么区别呢?
  25. //区别:
  26. string input;
  27. input = "张三"; //这是我们经常写的代码 没有任何问题
  28. //var input1; //这里已经报错了,因为input1没有被赋值,var根本推断不出来input1是什么类型.
  29. input1 = "李四";
  30. Console.ReadKey();
  31. }
  32. }
  33. }
总结:
var是一个推断类型,即根据变量的值,推断变量的类型.
var 变量在声明的时候,必须就为其赋值,否则报错.


foreach循环
•语法:
•foreach(集合中单个的类型 局部变量名 in 集合对象)
•{
–// 循环体
–// 循环体当中“局部变量”表示集合中遍历的数据
•}
•循环的过程(重点)
•总是从开始,一直循环到结束,中间不会停下来,除了break 
•临时变量,可以为其赋值吗?数组或集合中的数据会受到影响吗?
•常规下,数组或集合此时是只读的
•临时变量的类型
•设断点查看
•使用var判断
  1. namespace _11.foreach循环的学习
  2. {
  3. class Program
  4. {
  5. static void Main(string[] args)
  6. {
  7. int[] number = {1,2,3,4,54,5,6,7,5,4,3,2,45,3,2,5,2,43,52,2 };
  8. //使用foreach循环对number数组进行遍历
  9. foreach (int item in number)
  10. {
  11. Console.Write(item+",");
  12. }
  13. Console.ReadKey();
  14. }
  15. }
  16. }
 foreach循环的效率高于for循环的效率


 

02.ArrayList和HashTable的更多相关文章

  1. ArrayList、HashTable、List、Dictionary的演化及如何选择使用

    在C#中,数组由于是固定长度的,所以常常不能满足我们开发的需求. 由于这种限制不方便,所以出现了ArrayList. ArrayList.List<T> ArrayList是可变长数组,你 ...

  2. 类 Array Arraylist List Hashtable Dictionary

    总结C# 集合类 Array Arraylist List Hashtable Dictionary Stack Queue  我们用的比较多的非泛型集合类主要有 ArrayList类 和 HashT ...

  3. 利用ArrayList对Hashtable其进行排序

    前言: 最近在使用Hashtable的时候发现一个问题:就是当你对Hashtable进行遍历的时候整个输出结果是毫无顺序的, 上网查了一下说是Hashtable有自己内部的排序机制,如果要自定义排序的 ...

  4. C#中集合ArrayList与Hashtable的使用

    C#中集合ArrayList与Hashtable的使用 http://blog.csdn.net/linukey/article/details/42506819 ArrayList: 一. 注意事项 ...

  5. c#重点[集合类型]异常,数组,集合ArrayList,List<>,hashTable,hashtable泛型(Dictionary)

    1.foreach[对一些数组或集合进行遍历] foreach(类型 变量名 in 集合对象){语句体} //定义一个数组 ,,,,, }; foreach(var i in sNum1) { Con ...

  6. ArrayList,Hashtable,List<T>,Dictionary<K,V>

    1.ArrayList ArrayList list = new ArrayList(); //for遍历 ; i < list.Count; i++) { SE se=(SE)list[i]; ...

  7. ArrayList和Hashtable

    public class Tools{ public string Name{get ;set;}} #region 0.1ArrayList集合 ////告诉内存,我要存储内容 //ArrayLis ...

  8. C#中Dictionary、ArrayList、Hashtable和Array的区别

    IDictionary接口是所有字典类集合的基本接口,该接口与ICollection,IEnumerable接口是所有非泛型类集合的最基本的接口 IEnumerable接口用于公开枚举数,该枚举数支持 ...

  9. 第三章泛型集合ArrayList 和Hashtable

    第三章泛型集集合 ArrayList 变量名 = new ArrayList();  //相当与一个容器 他的执行using 是  using System.Collections; 变量名.ADD( ...

随机推荐

  1. ES聚合报错

    在测试Elasticsearch聚合的时候报了一个错误.具体如下: GET /megacorp/employee/_search { "aggs": { "all_int ...

  2. WCF进阶(二)——Contract

    前言 我和用户有个约定,这个契约上篇已经说过了,分为服务契约.操作契约.消息契约.数据契约等,说白了,你到底让我看到什么,你告诉我,或者说,我可以让你看到什么,你敢用吗?下面就说一些基础的,关于这个些 ...

  3. Django rest framework框架——APIview源码分析

    一.什么是rest REST其实是一种组织Web服务的架构,而并不是我们想象的那样是实现Web服务的一种新的技术,更没有要求一定要使用HTTP.其目标是为了创建具有良好扩展性的分布式系统. 可用一句话 ...

  4. 关于C语言中printf函数“输出歧视”的问题

    目录 关于C语言中printf函数"输出歧视"的问题 问题描述 探索问题原因 另一种研究方法 问题结论 关于C语言中printf函数"输出歧视"的问题 问题描述 ...

  5. C#直接使用DllImport外部Dll的方法

    C#.Net调用基本格式:[DLLImport(“DLL文件路径”)]修饰符 extern 返回值类型 方法名称(参数列表) 如: [DllImport("kernel32.dll" ...

  6. Sql server inner join......on

    --查询的时候,如果表中有重名的列,此时,应该在通过 表名.列名 的方式来限定指定的列是哪张表中的.select PhoneNum.pid, PhoneNum.pname, PhoneNum.pcel ...

  7. 3 hql语法及自定义函数(含array、map讲解) + hive的java api

    本博文的主要内容如下: .hive的详细官方手册    .hive支持的数据类型   .Hive Shell .Hive工程所需依赖的jar包  .hive自定义函数 .分桶4   .附PPT hiv ...

  8. Apache 配置 虚拟主机

    <VirtualHost *:80> ServerName tongcheng.5q88.cn:80 ServerAlias DirectoryIndex index.html index ...

  9. 1076 Wifi密码 (15 分)

    // 思路是网上以一位大神的,特简单直接采用字符串,判断长度,还有最后一个元素是否T,便可通过ASCll输出数字:#include <iostream> #include <stri ...

  10. C++_IO与文件3-用cin进行输入

    接下来讨论的是如何给程序提供数据? cin对象将标准输入表示为字节流. 通常情况下是通过键盘来生成这种字节流 cin对象根据接收值得变量类型,使用其方法将字符序列转换为所需的类型. cin>&g ...