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