轻松学习C#的ArrayList类

动态数组ArrayList类在System.Collecions的命名空间下,所以使用时要加入System.Collecions命名空间,而且ArrayList提供添加,插入或移除某一范围元素的方法。在ArrayList中,用户只能一次获取或设置一个元素的值。
一、ArrayList元素的添加
         ArrayList提供了两种方法用于向ArrayList添加元素,即Add和AddRange。
         (1),Add方法将单个元素添加到列表的尾部,其格式为:ArrayList 对象.Add(要添加的值)
         (2),AddRange方法获取一个实现ICollection接口的集合实例,并将这个集合实例按顺序添加到列表的尾部,其格式为:ArrayList 对象.AddRange(要添加的数组)
例一、通过上述的方法对数组进行元素的添加和数组的添加

<span style="font-size:18px;">using System;
using System.Collections;//需要添加的命名空间
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; 

namespace 动态数组的使用
{
 class Program
 {
 static void Main(string[] args)
 {
  ArrayList al = new ArrayList(3);//定义的一个动态数组且初始数组元素个数为3个
  Console.WriteLine("未添加前al的元素个数为:"+al.Count);
  al.Add("abc");
  al.Add("xyz");
  al.Add("opq");
  Console.WriteLine("调用Add方法后al的元素个数为:"+al.Count);
  string[] last = { "def", "ghj" };
  al.AddRange(last);
  Console.WriteLine("调用AddRange方法后al的元素个数为:"+al.Count);
  foreach (string item in al)
  {
  Console.WriteLine(item);
  }
  Console.ReadLine();
 }
 }
}</span> 

输出的结果为:未添加前al的元素个数为:0
                       调用Add方法后al的元素个数为:3 
                       调用AddRange方法后al的元素个数为:5
                        abc  xyz  opq  def  ghj(每一行输出一个)
二、ArrayList元素的删除
        ArrayList提供了四种方法用于从ArrayList中删除元素。这四种方法是Remove,RemoveAt,RemoveRange方法和Clear方法。
        Remove方法接受一个object类型值的参数,用于移除指定元素值的第一个匹配集合元素。其格式为:ArrayList 对象.Remove(值)
        RemoveAt方法接受一个int类型的参数,用于删除指定索引的集合元素。其格式为:ArrayList 对象.RemoveAt(索引)
        RemoveRange方法从集合中移除一定范围的元素。其格式为: ArrayList 对象.RemoveRange(开始索引,要删除的个数)
        Clear方法清除所有的元素。
例二、用上述的方法实现对元素的删除

<span style="font-size:18px;">using System;
using System.Collections;//需要添加的命名空间
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; 

namespace 动态数组的使用
{
 class Program
 {
 static void Main(string[] args)
 {
  ArrayList al = new ArrayList(3);//定义的一个动态数组且初始数组元素个数为3个
  al.Add("abc");
  al.Add(50);
  al.Add(10);
  string[] last = { "def", "ghj" };
  al.AddRange(last);
  Console.WriteLine("未删除前al的元素个数为:" + al.Count);
  al.RemoveAt(2);//删除索引为2后的元素
  Console.WriteLine("删除索引为2后的元素个数为:"+al.Count);
  al.Remove("abc");//删除第一个值为abc的项
  Console.WriteLine("删除值为abc后的元素个数为:"+al.Count);
  al.RemoveRange(1,2);//删除自索引为1的两个元素
  Console.WriteLine("删除自索引为1的两个元素后的元素个数:"+al.Count);
  foreach (string item in al)//因为此对象中的元素类型不一致所以为object类型
  {
  Console.WriteLine(item);
  }
  Console.ReadLine();
 }
 }
}</span>

输出的结果为:未删除前al的元素个数为:5
                       删除索引为2后的元素个数为:4
                       删除值为abc后的元素个数为:3
                       删除自索引为1的两个元素后的元素个数:1
                       xyz 
三、ArrayList元素的查找
          ArrayList元素的查找提供了三个方法查找ArrayList中的元素,分别是IndexOf方法,LastindexOf方法和BinarySearch方法。
          (1)、IndexOf方法从前后搜素指定的字符串,如果找到,返回匹配的第一项的自0开始的索引,否则返回-1。其格式为:ArrayList 对象.IndexOf(要索引的字符串)
          (2)、LastIndexOf方法从后向前搜素指定的字符串,如果找到,返回匹配的最后一项自0开始的索引,否则返回-1.其格式为:ArrayList 对象.LastIndexOf(要索引的字符串)
          以上两个方法都有三个重载版本,表示从指定的索引处开始搜索或者是从指定索引处搜素指定长度的字符串。
          (3)、BinarySearch方法使用二分算法从集合中指定的值,并返回找到的从0开始的索引,否则返回-1,其格式为:ArrayList 对象.BinarySearch(要索引的字符串)
 例三、使用上述的方法查找指定的元素

<span style="font-size:18px;">using System;
using System.Collections;//需要添加的命名空间
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; 

namespace 动态数组的使用
{
 class Program
 {
 static void Main(string[] args)
 {
  string[] str = { "a", "b", "c", "d", "d", "e", "f" };
  ArrayList al = new ArrayList(str);
  int i = al.IndexOf("c");//查找第一个字符c在数组中的位置
  Console.WriteLine("元素c在集合中的位置是:"+i);
  i = al.LastIndexOf("d");//查找最后一个字符d在数组中的位置
  Console.WriteLine("元素d在集合中的位置是:" + i);
  int j = al.BinarySearch("f");//查找元素f在数组中的位置
  if (j>0)
  {
  Console.WriteLine("元素f在数组中的位置是:"+j);
  }
  else
  {
  Console.WriteLine("没有找到a");
  }
  Console.ReadLine();
 }
 }
}</span>

输出的结果为:元素c在集合中的位置是:2
                       元素d在集合中的位置是:3
                       元素f在数组中的位置是:5
四、ArrayList元素的遍历
在执行上述程序的过程中已经使用foreach语句进行ArrayList元素的遍历,在这里就不再举例进行说明。

以上就是关于C#的ArrayList类的相关介绍,希望对大家的学习有所帮助。

(0)

相关推荐

  • Java中Vector与ArrayList的区别详解

    首先看这两类都实现List接口,而List接口一共有三个实现类,分别是ArrayList.Vector和LinkedList.List用于存放多个元素,能够维护元素的次序,并且允许元素的重复.3个具体实现类的相关区别如下:1.ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问.数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要讲已经有数组的数据复制到新的存储空间中.当从ArrayList的中间位置插入或者删除元素时,需要对数组

  • 浅谈 java中ArrayList、Vector、LinkedList的区别联系

    以前面试的时候经常会碰到这样的问题.,叫你写一下ArrayList.LinkedList.Vector三者之间的区别与联系:原先一直搞不明白,不知道这三者之间到底有什么区别?哎,惭愧,基础太差啊,木有办法啊委屈 现在得去说说这三者之间的区别与联系了:这三者都是实现了List接口,都拥有List接口里面定义的方法,并且同时拥有Collection接口的方法: ArrayList:采用的是数组的方式进行存储数据的,查询和修改速度快,但是增加和删除速度慢:线程是不同步 LinkedList:采用的是链

  • java ArrayList和Vector的区别详解

     ArrayList和Vector的区别 相同点: 1.ArrayList和Vector都是继承了相同的父类和实现了相同的接口 2.底层都是数组实现的 3.初始默认长度都为10. 不同点: 1.同步性: Vector中的public方法多数添加了synchronized关键字,以确保方法同步,也即是Vector线程安全,ArrayList线程不安全. 2.扩容不同 内部属性不同,这可能是导致扩容方式不同的原因所在. ArrayList有两个属性,存储数据的数组elementData,和存储记录数

  • Java ArrayList的不同排序方法

    由于其功能性和灵活性,ArrayList是 Java 集合框架中使用最为普遍的集合类之一.ArrayList 是一种 List 实现,它的内部用一个动态数组来存储元素,因此 ArrayList 能够在添加和移除元素的时候进行动态的扩展和缩减.你可能已经使用过 ArrayList,因此我将略过基础部分.如果你对 ArrayList 还不熟悉,你可以参考它的 API 文档,可以很容易理解在 ArrayList 上执行基本的操作. 在这篇文章中,我将讨论 ArrayList 中一种极其重要的操作,你很

  • Java中ArrayList类的用法与源码完全解析

    System.Collections.ArrayList类是一个特殊的数组.通过添加和删除元素,就可以动态改变数组的长度. 一.优点 1. 支持自动改变大小的功能 2. 可以灵活的插入元素 3. 可以灵活的删除元素 二.局限性 跟一般的数组比起来,速度上差些 三.添加元素 1.publicvirtualintAdd(objectvalue); 将对象添加到ArrayList的结尾处 ArrayList aList = new ArrayList(); aList.Add("a"); a

  • Java中的Vector和ArrayList区别及比较

    Vector  和  ArrayList 比较 有时用Vector更好一点,有时用ArrayList更好一点,不能准确容易的给出答案,因为要视具体情况而定,有四个主要考虑的因素: 1:API 2: 同步(synchronization) 3:数据增长(Data  growth) 4:使用模式(Usage  pattern) 下面分别意义探讨: 1:API 在Ken Arnold, James Gosling, and David Holmes 的 Java 程序语言的描述中,Vector和Arr

  • Java ArrayList.toArray(T[]) 方法的参数类型是 T 而不是 E的原因分析

    前两天给同事做 code review,感觉自己对 Java 的 Generics 掌握得不够好,便拿出 <Effective Java>1 这本书再看看相关的章节.在 Item 24:Eliminate unchecked warnings 这一节中,作者拿 ArrayList 类中的 public <T> T[] toArray(T[] a) 方法作为例子来说明如何对变量使用 @SuppressWarnings annotation. ArrayList 是一个 generic

  • 浅析java中ArrayList与Vector的区别以及HashMap与Hashtable的区别

    就ArrayList与Vector主要从二方面来说.一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的 二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半 就HashMap与HashTable主要从三方面来说.一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现 二.同步性:Hashtable是线程安全的,也就是说是同步的,

  • 详解Java中Vector和ArrayList的区别

    首先看这两类都实现List接口,而List接口一共有三个实现类,分别是ArrayList.Vector和LinkedList.List用于存放多个元素,能够维护元素的次序,并且允许元素的重复. 3个具体实现类的相关区别如下: 1.ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问.数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要讲已经有数组的数据复制到新的存储空间中.当从ArrayList的中间位置插入或者删除元素时,需要对

  • 由ArrayList来深入理解Java中的fail-fast机制

    1. fail-fast简介 "快速失败"也就是fail-fast,它是Java集合的一种错误检测机制.某个线程在对collection进行迭代时,不允许其他线程对该collection进行结构上的修改. 例如:假设存在两个线程(线程1.线程2),线程1通过Iterator在遍历集合A中的元素,在某个时候线程2修改了集合A的结构(是结构上面的修改,而不是简单的修改集合元素的内容),那么这个时候程序就会抛出 ConcurrentModificationException 异常,从而产生f

随机推荐