F # - รายการที่ไม่แน่นอน

List<'T> คลาสแสดงถึงรายการอ็อบเจ็กต์ที่พิมพ์อย่างมากซึ่งดัชนีสามารถเข้าถึงได้

เป็นคู่ที่ไม่แน่นอนของคลาส List คล้ายกับอาร์เรย์เนื่องจากสามารถเข้าถึงได้ด้วยดัชนีอย่างไรก็ตามรายการสามารถปรับขนาดได้แตกต่างจากอาร์เรย์ ดังนั้นคุณไม่จำเป็นต้องระบุขนาดระหว่างการประกาศ

การสร้างรายการที่เปลี่ยนแปลงได้

รายการถูกสร้างขึ้นโดยใช้ไฟล์ newคำหลักและเรียกตัวสร้างรายการ ตัวอย่างต่อไปนี้แสดงให้เห็นถึงสิ่งนี้ -

(* Creating a List *)
open System.Collections.Generic

let booksList = new List<string>()
booksList.Add("Gone with the Wind")
booksList.Add("Atlas Shrugged")
booksList.Add("Fountainhead")
booksList.Add("Thornbirds")
booksList.Add("Rebecca")
booksList.Add("Narnia")

booksList |> Seq.iteri (fun index item -> printfn "%i: %s" index booksList.[index])

เมื่อคุณคอมไพล์และรันโปรแกรมจะให้ผลลัพธ์ดังต่อไปนี้ -

0: Gone with the Wind
1: Atlas Shrugged
2: Fountainhead
3: Thornbirds
4: Rebecca
5: Narnia

รายการ (T) คลาส

คลาส List (T) แสดงถึงรายการอ็อบเจ็กต์ที่พิมพ์อย่างมากซึ่งดัชนีสามารถเข้าถึงได้ มีวิธีการค้นหาจัดเรียงและจัดการรายการ

ตารางต่อไปนี้แสดงคุณสมบัติตัวสร้างและวิธีการของคลาส List (T) -

คุณสมบัติ

ทรัพย์สิน คำอธิบาย
ความจุ รับหรือกำหนดจำนวนองค์ประกอบทั้งหมดที่โครงสร้างข้อมูลภายในสามารถเก็บไว้ได้โดยไม่ต้องปรับขนาด
นับ รับจำนวนองค์ประกอบที่มีอยู่ในรายการ (T)
สิ่งของ รับหรือตั้งค่าองค์ประกอบที่ดัชนีที่ระบุ

ตัวสร้าง

ตัวสร้าง คำอธิบาย
รายการ (T) () เริ่มต้นอินสแตนซ์ใหม่ของคลาส List (T) ที่ว่างเปล่าและมีความจุเริ่มต้นดีฟอลต์
รายการ (T) (IEnumerable (T)) เริ่มต้นอินสแตนซ์ใหม่ของคลาส List (T) ที่มีองค์ประกอบที่คัดลอกมาจากคอลเล็กชันที่ระบุและมีความจุเพียงพอที่จะรองรับจำนวนองค์ประกอบที่คัดลอก
รายการ (T) (Int32) เริ่มต้นอินสแตนซ์ใหม่ของคลาส List (T) ที่ว่างเปล่าและมีความจุเริ่มต้นที่ระบุ

วิธี

วิธีการ คำอธิบาย
เพิ่ม เพิ่มวัตถุที่ส่วนท้ายของรายการ (T)
AddRange เพิ่มองค์ประกอบของคอลเล็กชันที่ระบุไว้ที่ส่วนท้ายของรายการ (T)
AsReadOnly ส่งคืน wrapper IList (T) แบบอ่านอย่างเดียวสำหรับคอลเล็กชันปัจจุบัน
BinarySearch (T) ค้นหารายการที่เรียงลำดับทั้งหมด (T) สำหรับองค์ประกอบโดยใช้ตัวเปรียบเทียบเริ่มต้นและส่งกลับดัชนีที่อิงเป็นศูนย์ขององค์ประกอบ
BinarySearch (T, IComparer (T)) ค้นหารายการที่เรียงลำดับทั้งหมด (T) สำหรับองค์ประกอบโดยใช้ตัวเปรียบเทียบที่ระบุและส่งกลับดัชนีที่อิงเป็นศูนย์ขององค์ประกอบ
BinarySearch (Int32, Int32, T, IComparer (T)) ค้นหาช่วงขององค์ประกอบในรายการที่เรียงลำดับ (T) สำหรับองค์ประกอบโดยใช้ตัวเปรียบเทียบที่ระบุและส่งกลับดัชนีที่อิงเป็นศูนย์ขององค์ประกอบ
ชัดเจน ลบองค์ประกอบทั้งหมดออกจากรายการ (T)
ประกอบด้วย กำหนดว่าองค์ประกอบอยู่ในรายการ (T) หรือไม่
แปลงทั้งหมด (TOutput) แปลงองค์ประกอบในรายการปัจจุบัน (T) เป็นประเภทอื่นและส่งคืนรายการที่มีองค์ประกอบที่แปลงแล้ว
CopyTo (T []) คัดลอกรายการ (T) ทั้งหมดไปยังอาร์เรย์หนึ่งมิติที่เข้ากันได้โดยเริ่มจากจุดเริ่มต้นของอาร์เรย์เป้าหมาย
CopyTo (T [], Int32) คัดลอกรายการ (T) ทั้งหมดไปยังอาร์เรย์หนึ่งมิติที่เข้ากันได้โดยเริ่มจากดัชนีที่ระบุของอาร์เรย์เป้าหมาย
CopyTo (Int32, T [], Int32, Int32) คัดลอกช่วงขององค์ประกอบจากรายการ (T) ไปยังอาร์เรย์หนึ่งมิติที่เข้ากันได้โดยเริ่มจากดัชนีที่ระบุของอาร์เรย์เป้าหมาย
เท่ากับ (วัตถุ) กำหนดว่าวัตถุที่ระบุเท่ากับวัตถุปัจจุบันหรือไม่ (สืบทอดมาจาก Object)
มีอยู่ กำหนดว่ารายการ (T) มีองค์ประกอบที่ตรงกับเงื่อนไขที่กำหนดโดยเพรดิเคตที่ระบุหรือไม่
สรุป อนุญาตให้ออบเจ็กต์พยายามปลดปล่อยทรัพยากรและดำเนินการล้างข้อมูลอื่น ๆ ก่อนที่จะถูกเรียกคืนโดยการรวบรวมขยะ (รับมาจากวัตถุ)
หา ค้นหาองค์ประกอบที่ตรงกับเงื่อนไขที่กำหนดโดยเพรดิเคตที่ระบุและส่งกลับค่าที่เกิดขึ้นครั้งแรกภายในรายการทั้งหมด (T)
ค้นหาทั้งหมด ดึงองค์ประกอบทั้งหมดที่ตรงกับเงื่อนไขที่กำหนดโดยเพรดิเคตที่ระบุ
FindIndex (เพรดิเคต (T)) ค้นหาองค์ประกอบที่ตรงกับเงื่อนไขที่กำหนดโดยเพรดิเคตที่ระบุและส่งกลับดัชนีที่อิงศูนย์ของเหตุการณ์แรกภายในรายการทั้งหมด (T)
FindIndex (Int32, เพรดิเคต (T)) ค้นหาองค์ประกอบที่ตรงกับเงื่อนไขที่กำหนดโดยเพรดิเคตที่ระบุและส่งกลับดัชนีที่อิงเป็นศูนย์ของการเกิดครั้งแรกภายในช่วงขององค์ประกอบในรายการ (T) ที่ขยายจากดัชนีที่ระบุไปยังองค์ประกอบสุดท้าย
FindIndex (Int32, Int32, เพรดิเคต (T)) ค้นหาองค์ประกอบที่ตรงกับเงื่อนไขที่กำหนดโดยเพรดิเคตที่ระบุและส่งกลับค่าดัชนีที่อิงศูนย์ของการเกิดครั้งแรกภายในช่วงขององค์ประกอบในรายการ (T) ที่เริ่มต้นที่ดัชนีที่ระบุและมีจำนวนองค์ประกอบที่ระบุ
FindLast ค้นหาองค์ประกอบที่ตรงกับเงื่อนไขที่กำหนดโดยเพรดิเคตที่ระบุและส่งกลับค่าที่เกิดขึ้นสุดท้ายภายในรายการทั้งหมด (T)
FindLastIndex (เพรดิเคต (T)) ค้นหาองค์ประกอบที่ตรงกับเงื่อนไขที่กำหนดโดยเพรดิเคตที่ระบุและส่งกลับดัชนีที่อิงศูนย์ของเหตุการณ์สุดท้ายภายในรายการทั้งหมด (T)
FindLastIndex (Int32, เพรดิเคต (T)) ค้นหาองค์ประกอบที่ตรงกับเงื่อนไขที่กำหนดโดยเพรดิเคตที่ระบุและส่งกลับดัชนีที่อิงศูนย์ของเหตุการณ์สุดท้ายภายในช่วงขององค์ประกอบในรายการ (T) ที่ขยายจากองค์ประกอบแรกไปยังดัชนีที่ระบุ
FindLastIndex (Int32, Int32, เพรดิเคต (T)) ค้นหาองค์ประกอบที่ตรงกับเงื่อนไขที่กำหนดโดยเพรดิเคตที่ระบุและส่งกลับดัชนีที่อิงศูนย์ของเหตุการณ์สุดท้ายภายในช่วงขององค์ประกอบในรายการ (T) ที่มีจำนวนองค์ประกอบที่ระบุและสิ้นสุดที่ดัชนีที่ระบุ
แต่ละ ดำเนินการตามที่ระบุในแต่ละองค์ประกอบของรายการ (T)
GetEnumerator ส่งคืนตัวแจงนับที่วนซ้ำผ่านรายการ (T)
GetHashCode ทำหน้าที่เป็นฟังก์ชันแฮชเริ่มต้น (สืบทอดมาจาก Object)
GetRange สร้างสำเนาตื้นของช่วงขององค์ประกอบในรายการแหล่งที่มา (T)
GetType รับประเภทของอินสแตนซ์ปัจจุบัน (สืบทอดมาจาก Object)
ดัชนีของ (T) ค้นหาอ็อบเจ็กต์ที่ระบุและส่งกลับดัชนีที่อิงเป็นศูนย์ของเหตุการณ์แรกภายในรายการทั้งหมด (T)
IndexOf (T, Int32) ค้นหาอ็อบเจ็กต์ที่ระบุและส่งกลับดัชนีที่อิงเป็นศูนย์ของการเกิดครั้งแรกภายในช่วงขององค์ประกอบในรายการ (T) ที่ขยายจากดัชนีที่ระบุไปยังองค์ประกอบสุดท้าย
IndexOf (T, Int32, Int32) ค้นหาออบเจ็กต์ที่ระบุและส่งกลับดัชนีที่อิงเป็นศูนย์ของการเกิดครั้งแรกภายในช่วงขององค์ประกอบในรายการ (T) ที่เริ่มต้นที่ดัชนีที่ระบุและมีจำนวนองค์ประกอบที่ระบุ
แทรก แทรกองค์ประกอบลงในรายการ (T) ที่ดัชนีที่ระบุ
InsertRange แทรกองค์ประกอบของคอลเลกชันในรายการ (T) ที่ดัชนีที่ระบุ
LastIndexOf (T) ค้นหาอ็อบเจ็กต์ที่ระบุและส่งกลับดัชนีที่อิงเป็นศูนย์ของเหตุการณ์สุดท้ายภายในรายการทั้งหมด (T)
LastIndexOf (T, Int32) ค้นหาออบเจ็กต์ที่ระบุและส่งกลับดัชนีที่อิงเป็นศูนย์ของเหตุการณ์สุดท้ายภายในช่วงขององค์ประกอบในรายการ (T) ที่ขยายจากองค์ประกอบแรกไปยังดัชนีที่ระบุ
LastIndexOf (T, Int32, Int32) ค้นหาออบเจ็กต์ที่ระบุและส่งกลับดัชนีที่อิงเป็นศูนย์ของเหตุการณ์สุดท้ายภายในช่วงขององค์ประกอบในรายการ (T) ที่มีจำนวนองค์ประกอบที่ระบุและสิ้นสุดที่ดัชนีที่ระบุ
MemberwiseClone สร้างสำเนาตื้นของวัตถุปัจจุบัน (สืบทอดมาจาก Object)
ลบ ลบการเกิดขึ้นครั้งแรกของออบเจ็กต์เฉพาะจากรายการ (T)
ลบทั้งหมด ลบองค์ประกอบทั้งหมดที่ตรงกับเงื่อนไขที่กำหนดโดยเพรดิเคตที่ระบุ
RemoveAt ลบองค์ประกอบที่ดัชนีที่ระบุของรายการ (T)
RemoveRange ลบช่วงขององค์ประกอบออกจากรายการ (T)
ย้อนกลับ () กลับลำดับขององค์ประกอบในรายการทั้งหมด (T)
ย้อนกลับ (Int32, Int32) กลับลำดับขององค์ประกอบในช่วงที่ระบุ
จัดเรียง () จัดเรียงองค์ประกอบในรายการทั้งหมด (T) โดยใช้ตัวเปรียบเทียบเริ่มต้น
เรียงลำดับ (การเปรียบเทียบ (T)) จัดเรียงองค์ประกอบในรายการ (T) ทั้งหมดโดยใช้ระบบที่ระบุ การเปรียบเทียบ (T)
เรียง (IComparer (T)) จัดเรียงองค์ประกอบในรายการทั้งหมด (T) โดยใช้ตัวเปรียบเทียบที่ระบุ
เรียงลำดับ (Int32, Int32, IComparer (T)) จัดเรียงองค์ประกอบในช่วงขององค์ประกอบในรายการ (T) โดยใช้ตัวเปรียบเทียบที่ระบุ
ToArray คัดลอกองค์ประกอบของรายการ (T) ไปยังอาร์เรย์ใหม่
ToString ส่งคืนสตริงที่แสดงถึงวัตถุปัจจุบัน (สืบทอดมาจาก Object)
TrimExcess ตั้งค่าความจุเป็นจำนวนองค์ประกอบที่แท้จริงในรายการ (T) หากตัวเลขนั้นน้อยกว่าค่าเกณฑ์
TrueForAll กำหนดว่าทุกองค์ประกอบในรายการ (T) ตรงกับเงื่อนไขที่กำหนดโดยเพรดิเคตที่ระบุหรือไม่

ตัวอย่าง

(* Creating a List *)
open System.Collections.Generic

let booksList = new List<string>()
booksList.Add("Gone with the Wind")
booksList.Add("Atlas Shrugged")
booksList.Add("Fountainhead")
booksList.Add("Thornbirds")
booksList.Add("Rebecca")
booksList.Add("Narnia")

printfn"Total %d books" booksList.Count
booksList |> Seq.iteri (fun index item -> printfn "%i: %s" index booksList.[index])
booksList.Insert(2, "Roots")

printfn("after inserting at index 2")
printfn"Total %d books" booksList.Count

booksList |> Seq.iteri (fun index item -> printfn "%i: %s" index booksList.[index])
booksList.RemoveAt(3)

printfn("after removing from index 3")
printfn"Total %d books" booksList.Count

booksList |> Seq.iteri (fun index item -> printfn "%i: %s" index booksList.[index])

เมื่อคุณคอมไพล์และรันโปรแกรมจะให้ผลลัพธ์ดังต่อไปนี้ -

Total 6 books
0: Gone with the Wind
1: Atlas Shrugged
2: Fountainhead
3: Thornbirds
4: Rebecca
5: Narnia
after inserting at index 2
Total 7 books
0: Gone with the Wind
1: Atlas Shrugged
2: Roots
3: Fountainhead
4: Thornbirds
5: Rebecca
6: Narnia
after removing from index 3
Total 6 books
0: Gone with the Wind
1: Atlas Shrugged
2: Roots
3: Thornbirds
4: Rebecca
5: Narnia