के लिए सी # सूची
वैसे भी मुझे वास्तव में क्या करने की ज़रूरत है यह अधिक कुशल बनाते हैं, कम संसाधनों का उपयोग करते हैं और जल्दी होते हैं, तो क्या ऐसा करने के कोई तरीके हैं?
के लिए सी # सूची
वैसे भी मुझे वास्तव में क्या करने की ज़रूरत है यह अधिक कुशल बनाते हैं, कम संसाधनों का उपयोग करते हैं और जल्दी होते हैं, तो क्या ऐसा करने के कोई तरीके हैं?
उपयोग लांबा भाव अगर यह एक List<string>
है:
list.RemoveAll(x => x.Contains(line_to_delete));
List<String> regKey = new List<String> { "test1", "test2" };
var toDelete = regKey.Where(u => u.Contains(line_to_delete)).SingleOrDefault();
if (toDelete != null)
regKey.Remove(toDelete);
या
regkey.RemoveAll(k => k.Contains(line_to_delete));
यह आपके हटाए जाने अधिक पठनीय कर देगा, लेकिन मैं प्रदर्शन अपने वर्तमान पद्धति के खिलाफ तुलना पर यकीन नहीं है।
var result = list.Where(x => !x.Contains(line_to_delete))
पहले, यकीन है कि यह काफी कुशल नहीं है:
सबसे आसान तरीका उपयोग करने के लिए है। यदि ऐसा नहीं है, तो आपको trie जैसे अपने तारों का प्रतिनिधित्व करने के लिए उन्नत डेटा संरचनाओं का सहारा लेना होगा। ऐसी किसी भी चीज के लिए सी # में कोई मूल समर्थन नहीं है।
आपका सबसे अच्छा शर्त सूची को सॉर्ट और द्विआधारी खोज का उपयोग करने के लिए है। SortedList आप के लिए .. इस तरह आप हे (लॉग (एन)) प्रदर्शन
सूची
नहीं, यह नहीं है मदद करें, क्योंकि ओपी मिलान करने वाले सबस्ट्रिंग के लिए खोज कर रहा है। –
सूची को सॉर्ट करने की लागत के बारे में क्या? –
मुझे लगता है कि यह indexOf बल्कि शामिल की तुलना में उपयोग करने के लिए बेहतर है प्राप्त कर सकते हैं, कि ऊपर खोज
गति इतनी का उपयोग करके कर देगा:
regkey.RemoveAll(k => k.IndexOf(line_to_delete) >=0);
यह अभी भी ओ (एन) प्रदर्शन – mfeingold
हाँ होगा, लेकिन चूंकि ओपी सबस्ट्रिंग्स पर मेल खाता है, मुझे नहीं लगता कि सॉर्टेडलिस्ट मदद करेगा। –
सच है, लेकिन आपके पास बाइनरी पेड़ है और आप अपने बाइनरी खोज को मौजूदा पेड़ पर स्वयं लागू कर सकते हैं। यह हमें मुश्किल नहीं है और आपको ओ (लॉग (एन)) इस तरह से – mfeingold