栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

arraylist存放不同数据类型

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

arraylist存放不同数据类型

动态数组(ArrayList)

1.简介

动态数组(ArrayList)代表了可被单独索引的对象的有序集合(从前往后)。

它基本上可以替代一个数组。但是与数组不同的是,您可以使用索引在指定的位置添加和移除项目,动态数组会自动重新调整它的大小。它也允许在列表中进行动态内存分配、增加、搜索、排序各项。


2.特性介绍

1)容量是指动态数组最大包含的元素数,会根据元素增减而动态调整容量。

2)插入和删除元素会改变其它元素下标,当然排序同样会调整下标。

3)所有元素均为 object 类型。


  1. ArrayList 类的方法和属性

1)ArrayList 类的一些常用的 属性:

属性描述
Capacity获取或设置集合容量
Count获取实际包含的元素个数
IsFixedSize是否具有固定大小
IsReadOnly是否只读

2)ArrayList 类的一些常用的 方法:

方法描述
int Add( object value );在末尾添加一个对象
void AddRange( ICollection c );在末尾添加集合的元素
void Clear();移除所有的元素
bool Contains( object item );判断元素是否存在
ArrayList GetRange( int index, int count );返回一个ArrayList,表示从索引位置到指定长度的元素集合
int IndexOf(object);返回某个值第一次出现的索引(索引从零开始)
void Insert( int index, object value );在指定索引处,插入一个元素
void InsertRange( int index, ICollection c );在指定索引处,插入某个集合的元素
void Remove( object obj );移除第一次出现的指定对象
void RemoveAt( int index );移除指定索引处的元素
void RemoveRange( int index, int count );移除某个范围的元素
void Reverse();逆转元素的顺序
void SetRange( int index, ICollection c );复制某个集合的元素到某个范围的元素上
void Sort();元素进行排序
void TrimToSize();设置容量为元素的实际个数

2. 代码演示

注意:为了方便阅读,以下将代码拆分为多段进行演示,实际运行可以把代码直接拼接起来

using System;
using System.Collections;
using System.Collections.Generic;

namespace ArrayListTest
{
    class Program
    {
        static void Main(string[] args)
        {
            ArrayListTest();
            Console.ReadKey();
        }
        //封装两个简单方法,方便后续验证使用
        /// 
        /// 分隔线
        /// 
        static void 分隔线()
        {
            Console.WriteLine("n ------------------------------------------- n");
        }
        /// 
        /// 遍历 ArrayList 中的所有元素
        /// 
        static void FArrayList(ArrayList array)
        {
            Console.WriteLine("元素:");
            foreach (var item in array)
            {
                Console.WriteLine(item);
            }
            分隔线();
        }
        static void ArrayListTest()
        {
            //不可为泛型,可以指定容量
            ArrayList arraylist = new ArrayList(); 
            Console.WriteLine("1.Add()方法可添加任意类型数据:");
            arraylist.Add(1);
            arraylist.Add('a');
            arraylist.Add("A");
            arraylist.Add(false);
            arraylist.Add(1.111f);
            int[] i = {0,1 };
            arraylist.Add(i);
            Dictionary dic = new Dictionary();
            dic.Add(1, "程序");
            arraylist.Add(dic);
            Console.WriteLine("数组容量:" + arraylist.Capacity);//容量会根据实际元素数量扩容
            Console.WriteLine("元素个数:" + arraylist.Count);
            Console.WriteLine("长度固定:" + arraylist.IsFixedSize);
            Console.WriteLine("是否只读:" + arraylist.IsReadOnly);
            Console.WriteLine("默认元素:" );
            FArrayList(arraylist);

            Console.WriteLine("2.在末尾添加集合元素:" );//添加的集合元素会被遍历出单个进行添加
            List li = new List();
            li.Add("编程");
            li.Add("代码");
            arraylist.AddRange(li);
            FArrayList(arraylist);
        }
    }
}

运行结果:

            Console.WriteLine("3.判断元素是否存在:");
            Console.WriteLine("代码是否存在: " + arraylist.Contains("代码"));
            Console.WriteLine("0是否存在: " + arraylist.Contains(0));
            Console.WriteLine("n");

            Console.WriteLine("4.从指定位置索引获取指定长度集合:");
            ArrayList array2 =  arraylist.GetRange(2, 3);
            FArrayList(array2);

运行结果:

            Console.WriteLine("5.获取某个值第一次出现的索引:");
            arraylist.Add("A");
            Console.WriteLine("A的索引值: " + arraylist.IndexOf("A"));
            Console.WriteLine("n");

            Console.WriteLine("6.指定索引处插入一个元素: 2, B ");
            //插入元素后,后面元素的下标会后移一位
            Console.WriteLine(" 前." + arraylist[2]);
            arraylist.Insert(2, "B");
            Console.WriteLine(" 后." + arraylist[2]);

            Console.WriteLine("7.指定索引处插入集合元素:9, dic ");
            //插入集合后,将会改变后面所有元素的下标
            Console.WriteLine(" 前." + arraylist[9]);
            arraylist.InsertRange(9, dic);
            Console.WriteLine(" 后." + arraylist[9]);

运行结果:

            Console.WriteLine("8.移除第一次出现的指定对象:dic ");
            //移除元素后,后面元素的下标会前移一位
            int id = arraylist.IndexOf(dic);
            Console.WriteLine(" 前." + arraylist[id]);
            arraylist.Remove(dic);
            Console.WriteLine(" 后." + arraylist[id]);

            Console.WriteLine("9.移除指定索引处的元素:{0}",arraylist[2]);
            //移除集合后,将会改变后面所有元素的下标
            Console.WriteLine(" 前." + arraylist[2]);
            arraylist.RemoveAt(2);
            Console.WriteLine(" 后." + arraylist[2]);

            Console.WriteLine("10.移除指定范围的元素:");
            arraylist.RemoveRange(3, 3);//从索引开始,移除3个元素
            FArrayList(arraylist);

运行结果:

            Console.WriteLine("11.逆转元素的顺序:");
            arraylist.Reverse();
            FArrayList(arraylist);

运行结果:

            Console.WriteLine("12.复制某个集合的元素到某个范围的元素上:");
            arraylist.SetRange(0,li);
            FArrayList(arraylist);

运行结果:

            Console.WriteLine("13.对元素进行排序:");//数据必须为相同类型,否则无法排序
            arraylist.Clear();
            arraylist.Add("b");
            //ar.Add(1);
            //ar.Add(3);
            arraylist.Add("a");
            arraylist.Sort();
            FArrayList(arraylist);

运行结果:

补充事项:

关于初始化ArrayList,初始化时可以直接赋值,这里涉及到其它数据类型的转换

static void ArrayListTest2()
        {
            int[] i = { 1, 2, 3, 4 };//一维数组
            int[,] i2 = { { 0, 0 }, { 0, 1 }, { 0, 3 } };//多维数组
            Dictionary dic = new Dictionary();//字典
            dic.Add(0, "a");
            dic.Add(1, "b");
            ArrayList ar = new ArrayList( i );
            //ArrayList ar2 = new ArrayList( i2 ); //使用多维数组运行会报错,同理,数组型的数组也会报错
            ArrayList ar3 = new ArrayList( dic );
            foreach (var item in ar)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("n");

            foreach (var item in ar3)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("n");
        }

运行结果:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/906863.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号