集合 - Array && ArrayList

来源:互联网 发布:支持绑定第三方域名 编辑:程序博客网 时间:2024/06/04 18:26

集合:

ArrayList 属于非泛型集合; ArrayList 是一个数组集合. 

它属于动态改变长度的数组集合,不需要我们管理.

 ArrayList使用效率会低一些   因为有一个数据转换的过程

1、List的基础、常用方法:

声明: 
1、List<T> l = new List<T>();  
T为列表中元素类型,现在以string类型作为例子

比如:List<string> mList = new List<string>();

2、List<T> testList =new List<T> (IEnumerable<T> collection);

以一个集合作为参数创建List

比如:
string[] temArr = { "A", "B, "C", "D, "E", "F", "J", "K" };
List<string> testList = new List<string>(temArr);

ArrayList 比 List 多一步装箱和拆箱的操作;所以 List 执行速率快得多

装箱和拆箱
  装就是把普通数据类型转成object对象类型
  拆就是把装好的object拆成装箱之前的真实类型(强制转换)
  占用内存,消耗内存太大


ArrayList的例子:

using System;using System.Collections;using System.Collections.Generic;using System.Diagnostics;                                   //特性命名空间using System.Threading;namespace 集合之ArrayList{class Person{public string name;public string age;public Person(string name){this.name = name;}}class MainClass{[Obsolete("old method",true)]/// <summary>/// 非泛型集合添加元素演示/// </summary>public void Test1(){ArrayList al = new ArrayList ();//演示添加非对象元素:al.Add ("刘德华");al.Add ("张学友");al.Add (1);//遍历方式1//for (int i = 0; i < al.Count; i++) {//Console.WriteLine (al[i]);//}//遍历方式2//foreach (var item in al) {//Console.WriteLine (item);//}Console.WriteLine ("---");}/// <summary>/// 泛型集合添加元素演示/// </summary>public void Test2(){//<T> 这个T是指占位符,不代表任何意义List<string> list = new List<string> ();list.Add ("张学友");list.Add ("刘德华");//list.Add (1);}/// <summary>/// 演示非泛型集合添加10000000个元素所耗费的时间/// </summary>public void Test4(){ArrayList al = new ArrayList ();Stopwatch sw = new Stopwatch ();sw.Start ();for (int i = 0; i < 10000000; i++) {al.Add (i);}sw.Stop ();//Console.WriteLine ("非泛型集合ArrayList添加100万元素所耗费的时间:"+sw.Elapsed);Console.WriteLine ("1");}/// <summary>/// 演示泛型集合添加10000000个元素所耗费的时间/// </summary>public void Test5(){List<int> al = new List<int> ();Stopwatch sw = new Stopwatch ();sw.Start ();for (int i = 0; i < 10000000; i++) {al.Add (i);}sw.Stop ();//Console.WriteLine ("       泛型集合List添加100万元素所耗费的时间:"+sw.Elapsed);Console.WriteLine ("2");}/// <summary>/// 非泛型集合排序/倒排/// </summary>public void Test6(){//ArrayList al = new ArrayList ();//int[] arr = { 1, 2, 3, 4, 5, 6 };//al.AddRange (arr);////倒排//al.Reverse();////排序//al.Sort();////Console.WriteLine (al.Count);//foreach (var item in al) {//Console.WriteLine (item);//}//List<int> li = new List<int> ();}/// <summary>/// 研究arraylist的capacity/// </summary>public void Test7(){ArrayList al = new ArrayList (3);Console.WriteLine (al.Capacity);al.Add (1);al.Add (2);al.Add (3);al.Add (4);Console.WriteLine (al.Capacity);}public static void Main (string[] args){//MainClass mc = new MainClass ();//new MainClass().Test1();//new MainClass ().Test4 ();//new MainClass ().Test5 ();//Thread th = new Thread (mc.Test4);//th.Start ();////Thread th2 = new Thread (mc.Test5);//th2.Start ();//new MainClass ().Test7 ();//练习1:设计一个学生系统,可以录入学生相关信息,并且能通过学号反向输出学生的//全部信息//练习2:根据上题,增加可以增加或删除学生功能}}}

List的例子:

using System;using System.Collections;using System.Collections.Generic;namespace 练习{class Student {public int stu_Id;public string stu_Name;public float stu_Score;public Student (int stu_Id,string stu_Name,float stu_Score) {this.stu_Id = stu_Id;this.stu_Name = stu_Name;this.stu_Score = stu_Score;}}class MainClass{public static void Main (string[] args){Console.WriteLine ("请输入输入需要增加的学生的个数");List<Student> ls = new List<Student> ();int a = int.Parse (Console.ReadLine ());for (int i = 0; i < a; i++) {Console.WriteLine ("请按顺序输入 学号、姓名、得分");int stu_Id = int.Parse (Console.ReadLine ());string stu_Name = Console.ReadLine ();float stu_Score = float.Parse (Console.ReadLine ());ls.Add (new Student (stu_Id, stu_Name, stu_Score));}Console.WriteLine ("请输入需要查询的学生的学号");int cheakID = int.Parse(Console.ReadLine());foreach (Student item in ls) {if (cheakID == item.stu_Id) {Console.WriteLine ("{0}号同学;他的姓名是:{1};他的得分是{2}",item.stu_Id,item.stu_Name,item.stu_Score);}}Console.WriteLine ("输入需要添加的学生的学号、姓名、得分");int stu_Id1= int.Parse (Console.ReadLine ());string stu_Name1 = Console.ReadLine ();float stu_Score1 = float.Parse (Console.ReadLine ());ls.Add (new Student (stu_Id1, stu_Name1, stu_Score1));Console.WriteLine ("此时表单中有");foreach (Student item in ls) {Console.WriteLine ("学号{0};姓名{1};得分{2}",item.stu_Id,item.stu_Name,item.stu_Score);}Console.WriteLine ("输入需要删除的学生的学号");int stu_Id2 = int.Parse (Console.ReadLine ());for (int i = 0; i < ls.Count; i++) {if (stu_Id2 == ls[i].stu_Id) {ls.Remove (ls [i]);}}Console.WriteLine ("此时表单中有");foreach (Student item in ls) {Console.WriteLine ("学号{0};姓名{1};得分{2}",item.stu_Id,item.stu_Name,item.stu_Score);}



0 0
原创粉丝点击