ฉันได้อ่านคำถามนี้เกี่ยวกับสาเหตุที่เป็นไปไม่ได้ แต่ยังไม่พบวิธีแก้ปัญหา
ผมอยากจะดึงรายการจาก HashSet<T>
.NET ฉันกำลังมองหาวิธีที่จะมีลายเซ็นนี้:
/// <summary>
/// Determines if this set contains an item equal to <paramref name="item"/>,
/// according to the comparison mechanism that was used when the set was created.
/// The set is not changed. If the set does contain an item equal to
/// <paramref name="item"/>, then the item from the set is returned.
/// </summary>
bool TryGetItem<T>(T item, out T foundItem);
การค้นหาชุดสำหรับรายการด้วยวิธีการดังกล่าวจะเป็น O (1) วิธีเดียวที่จะดึงข้อมูลจาก a HashSet<T>
คือการระบุรายการทั้งหมดซึ่งเป็น O (n)
ฉันไม่พบวิธีแก้ปัญหาใด ๆ สำหรับปัญหานี้จากนั้นสร้างของฉันเองHashSet<T>
หรือใช้ไฟล์Dictionary<K, V>
. ความคิดอื่น ๆ ?
หมายเหตุ:
ฉันไม่ต้องการตรวจสอบว่าHashSet<T>
มีรายการอยู่หรือไม่ ฉันต้องการรับข้อมูลอ้างอิงไปยังรายการที่เก็บไว้HashSet<T>
เนื่องจากฉันต้องการอัปเดต (โดยไม่ต้องแทนที่ด้วยอินสแตนซ์อื่น) รายการที่ฉันจะส่งต่อไปTryGetItem
จะเท่ากัน (ตามกลไกการเปรียบเทียบที่ฉันส่งผ่านไปยังผู้สร้าง) แต่จะไม่เป็นการอ้างอิงเดียวกัน