Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

สร้าง ArrayList ด้วยความจุเริ่มต้นที่ระบุใน C#

ภาพรวม

คอนสตรัคเตอร์ new ArrayList(int capacity) สร้าง ArrayList พร้อมจัดสรรอาร์เรย์ภายในขนาดที่ระบุล่วงหน้า ช่วยลดการขยายอาร์เรย์ซ้ำเมื่อทราบจำนวนองค์ประกอบประมาณ

ตัวอย่างที่ 1: สร้าง ArrayList ความจุ 5 และ 10

using System;
using System.Collections;

public class Demo
{
    public static void Main(String[] args)
    {
        ArrayList list1 = new ArrayList(5);
        list1.Add("A");
        list1.Add("B");
        list1.Add("C");
        list1.Add("D");
        Console.WriteLine("Capacity in ArrayList1 = " + list1.Capacity);
        Console.WriteLine("Elements in ArrayList1...");
        foreach (string res in list1)
        {
            Console.WriteLine(res);
        }
        ArrayList list2 = new ArrayList(10);
        list2.Add("A");
        list2.Add("B");
        list2.Add("C");
        list2.Add("D");
        list2.Add("E");
        list2.Add("F");
        list2.Add("G");
        list2.Add("H");
        list2.Add("I");
        Console.WriteLine("Capacity in ArrayList2 = " + list2.Capacity);
        Console.WriteLine("Elements in ArrayList2...");
        foreach (string res in list2)
        {
            Console.WriteLine(res);
        }
        Console.WriteLine("Is ArrayList1 equal to ArrayList2? = " + list1.Equals(list2));
        list2.RemoveRange(3, 2);
        Console.WriteLine("Elements in ArrayList2 after removing elements in a range...");
        foreach (string res in list2)
        {
            Console.WriteLine(res);
        }
        Console.WriteLine("Capacity in ArrayList2 = " + list2.Capacity);
    }
}

ผลลัพธ์

Capacity in ArrayList1 = 5
Elements in ArrayList1...
A
B
C
D
Capacity in ArrayList2 = 10
Elements in ArrayList2...
A
B
C
D
E
F
G
H
I
Is ArrayList1 equal to ArrayList2? = False
Elements in ArrayList2 after removing elements in a range...
A
B
C
F
G
H
I
Capacity in ArrayList2 = 10

ตัวอย่างที่ 2: Clear() และตรวจสอบ Capacity

using System;
using System.Collections;

public class Demo
{
    public static void Main(String[] args)
    {
        ArrayList list = new ArrayList(5);
        list.Add("A");
        list.Add("B");
        list.Add("C");
        list.Add("D");
        Console.WriteLine("Capacity in ArrayList = " + list.Capacity);
        Console.WriteLine("Count of elements in ArrayList = " + list.Count);
        Console.WriteLine("Elements in ArrayList...");
        foreach (string res in list)
        {
            Console.WriteLine(res);
        }
        list.Clear();
        Console.WriteLine("Capacity in ArrayList = " + list.Capacity);
        Console.WriteLine("Count of elements in ArrayList = " + list.Count);
    }
}

ผลลัพธ์

Capacity in ArrayList = 5
Count of elements in ArrayList = 4
Elements in ArrayList...
A
B
C
D
Capacity in ArrayList = 5
Count of elements in ArrayList = 0

คำอธิบายเพิ่มเติม

  • Capacity ต้อง >= 0 ตั้งค่าติดลบโยน ArgumentOutOfRangeException
  • หากเพิ่มข้อมูลเกิน Capacity จะขยายอัตโนมัติ (คูณ 2) ค่าใช้จ่าย O(n)
  • การตั้งค่า Capacity ใหญ่ล่วงหน้า (pre-allocation) เพิ่มประสิทธิภาพเมื่อทราบขนาดประมาณ
  • RemoveRange(index, count) ลบช่วงขององค์ประกอบ Capacity ไม่เปลี่ยน
  • TrimToSize() ลด Capacity ให้เท่ากับ Count (ปล่อยหน่วยความจำ)
  • ArrayList เป็น non-generic แนะนำ List<T> ซึ่งมีคอนสตรัคเตอร์ capacity เหมือนกัน