当前位置: 首页>后端>正文

ArrayList 动态数组

ArrayList 动态数组

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

属性

  • Capacity:获取或设置 ArrayList 可以包含的元素个数
  • Count:获取 ArrayList 中实际包含的元素个数
  • IsFixedSize:获取一个值,表示 ArrayList 是否具有固定大小
  • IsReadOnly:获取一个值,表示 ArrayList 是否只读
  • IsSynchronized:获取一个值,表示访问 ArrayList 是否同步(线程安全)
  • Item[Int32]:获取或设置指定索引处的元素
  • SyncRoot:获取一个对象用于同步访问 ArrayList

方法

1. Add 添加一个

在 ArrayList 的末尾添加一个对象

public virtual int Add( object value );
2. AddRange 添加多个

在 ArrayList 的末尾添加 ICollection 的元素

public virtual void AddRange( ICollection c );
3. Clear 移除

从 ArrayList 中移除所有的元素

public virtual void Clear();
4. Contains 包含

判断某个元素是否在 ArrayList 中

public virtual bool Contains(object item);
5. GetRange 获取子集

返回一个 ArrayList,表示源 ArrayList 中元素的子集

public virtual ArrayList GetRange( int index, int count );
6. IndexOf 返回指定元素索引值

返回某个值在 ArrayList 中第一次出现的索引,索引从零开始

public virtual int IndexOf(object);
7. Insert 插入一个

在 ArrayList 的指定索引处,插入一个元素

public virtual void Insert( int index, object value );
8. InsertRange 插入多个

在 ArrayList 的指定索引处,插入某个集合的元素

public virtual void InsertRange( int index, ICollection c );
9. Remove 移除第一次指定对象

从 ArrayList 中移除第一次出现的指定对象

public virtual void Remove( object obj );
10. RemoveAt 移除指定索引对象

移除 ArrayList 的指定索引处的元素

public virtual void RemoveAt( int index )
11. RemoveRange 移除范围内多个

从 ArrayList 中移除某个范围的元素

public virtual void RemoveRange( int index, int count );
12. Reverse 反转顺序

逆转 ArrayList 中元素的顺序

public virtual void Reverse();
13. SetRange 复制

复制某个集合的元素到 ArrayList 中某个范围的元素上

public virtual void SetRange( int index, ICollection c );
14. Sort 排序

对 ArrayList 中的元素进行排序

public virtual void Sort();
15. TrimToSize 设置容量

设置容量为 ArrayList 中元素的实际个数

public virtual void TrimToSize();

示例

ArrayList 存储不同类型时的排序

using System;
using System.Collections;

namespace CollectionApp
{
    class MyComparer : IComparer
    {
        public int Compare(object x, object y)
        {
            // 自定义比较规则
            // 如果x,y都是int,那么按正常流程比较
            // 如果其中一个不是int,那么认为不是int的值小
            // 如果都不是int,那么认为他们相等
            if (x is int)
            {
                if (y is int)
                {
                    if ((int)x < (int)y) return -1;
                    if ((int)x == (int)y) return 0;
                    return 1;
                }
                return 1;
            }
            if (y is int) return -1;
                return 0;
        }
    }

    class Entry
    {
        static void Print(ArrayList l)
        {
            Console.WriteLine("\t大小能力:{0}   实际大小:{1}", l.Capacity, l.Count);
            Console.Write("\t内容:");
            foreach (object obj in l)
            Console.Write("{0} ", obj);
            Console.Write("\r\n");
        }
        static void Main()
        {
            ArrayList l = new ArrayList();
            Console.WriteLine("添加一些不都是Int的数据:");
            l.Add(22);
            l.Add(77);
            l.Add("abc");
            l.Add(33);
            Print(l);
            Console.WriteLine("排序:");
            l.Sort(new MyComparer());
            Print(l);
            Console.ReadKey();
        }
    }
}

/* Output
添加一些不都是Int的数据:
    大小能力:4   实际大小:4
    内容:22 77 abc 33 
排序:
    大小能力:4   实际大小:4
    内容:abc 22 33 77 
*/

ps:

ArrayList 类: https://learn.microsoft.com/zh-cn/dotnet/api/system.collections.arraylist?view=net-8.0


https://www.xamrdz.com/backend/3jm1939021.html

相关文章: