मेरे पास ArrayList
है जिसमें User
जैसे कुछ ऑब्जेक्ट हैं, और प्रत्येक ऑब्जेक्ट में name
और password
प्रॉपर्टी है। मैं केवल User
ऑब्जेक्ट को कैसे हटा सकता हूं जिसमें इस ArrayList
से विशिष्ट 'नाम' है?मैं जावा में किसी ऐरेलिस्ट से ऑब्जेक्ट को कैसे हटा सकता हूं?
उत्तर
बस उपयोगकर्ता से प्राप्त वस्तुओं के ArrayList के माध्यम से खोजें, और उस नाम के बराबर नाम के लिए परीक्षण करें जिसे आप निकालना चाहते हैं। फिर सूची से उस वस्तु को हटा दें।
एक उम्मीद है कि ऑप्टिमाइज़ेशन किए जा सकते हैं, अन्यथा ओपी ओ (एन) कार्यान्वयन के साथ फंस गया है। –
@ एक्स-ज़ीरो किस परिदृश्य में आप नहीं जानते कि एक वस्तु सूची में कहां है, क्या आप 'ओ (एन)' से बेहतर हो सकते हैं? –
@ एक्स-शून्य: यदि सभी ओपी में एक सरणी सूची है, तो 'ओ (एन)' वह सबसे अच्छा है जिसके लिए वह उम्मीद कर सकता है (अकेले तत्व हटाने 'ओ (एन) ') है। – NPE
आप किए जा सकेंगे: पुनरावर्तक के साथ सूची पर
- पाश
- जांच कर लें कि आपके सूची में प्रत्येक आइटम सही उपयोगकर्ता (नाम की जाँच)
- अगर यह होता है है, निकालें विधि का उपयोग इटेटरेटर का।
Iterator<User> it = list.iterator();
while (it.hasNext()) {
User user = it.next();
if (user.getName().equals("John Doe")) {
it.remove();
}
}
ओपी की तरह ऐसा नहीं लगता है कि इस प्रश्न के लिए कोई काम है, आपको उन्हें मुफ्त में कोड नहीं देना चाहिए। –
सूची का प्रतिनिधित्व क्या होता है ????? –
हां हां मुझे मिल गया ... धन्यवाद –
आपका कोड इस प्रकार दिखाई देंगे:
List<User> users = new ArrayList<User>();
public void removeUser(String name){
for(User user:users){
if(user.name.equals(name)){
users.remove(user);
}
}
}
आपको लूप के भीतर निकालने के लिए एक इटरेटर का उपयोग करना चाहिए या आपको एक समवर्ती मोडिफिकेशन अपवाद प्राप्त होगा। – assylias
@assylias ऐप और अन्य संग्रहों पर अधिक सुविधाजनक बनाने के लिए जावा 5 में लूप के लिए मूल बढ़ाया गया था। और प्रत्येक लूप प्रत्यारोपण के लिए इटरेटर –
का उपयोग इस कोड को चलाने का प्रयास करें (प्रारूपण के लिए खेद है): 'सूची
एक और सोचा: उपयोगकर्ता वर्ग विशिष्ट उपयोगकर्ता नाम से परिभाषित किया जा सकता है, और यदि आप ओवरराइड की तरह कुछ के साथ बराबर है:
सार्वजनिक बूलियन बराबर (वस्तु arg0) {
return this.name.equals(((user) arg0).name);
}
आप सूची के माध्यम से बिना उपयोगकर्ता को हटा सकते हैं। तुम सिर्फ कर सकते हैं:
list.remove (नया उपयोगकर्ता ("जॉन डो"))
आप शायद List
से वस्तु को दूर करने का प्रयास करते हुए ConcurrentModificationException
के साथ सामना कर रहे हैं। इस अपवाद के लिए एक स्पष्टीकरण यह है कि ArrayList
का पुनरावर्तक एक असफल-तेज़ इटरेटर है। उदाहरण के लिए, यह एक अपवाद (असफल) फेंक देगा जब यह पता चलता है कि रनटाइम में इसका संग्रह संशोधित किया गया है। इस समस्या का समाधान Iterator
का उपयोग करना है।
List<User> list = new ...
for (Iterator<User> it = list.iterator(); it.hasNext();) {
User user = it.next();
if (user.getUserEmail().equals(currentUser.getUserEmail())) {
it.remove();
}
}
आप कुछ इस तरह इस्तेमाल कर सकते हैं:
arrayList.removeIf(s-> s.getName().contains("yourName"));
करने के लिए इटरेटर ऑब्जेक्ट का पता लगा सकता है 's' क्या है? कृपया अपने उत्तरों को थोड़ा और विशिष्ट बनाएं। –
एस यहां अनुमानित है और यह केवल जेडीके 1.8 में काम करता है जहां लैम्ब्डा अभिव्यक्ति समर्थित है। इस संग्रह के सभी तत्वों को हटा देता है जो दिए गए भविष्य को संतुष्ट करते हैं। – jprism
अनुशंसित
यहाँ एक सरल उदाहरण तरीका प्रदर्शित करने वाले आप List
के माध्यम से पुनरावृति और तत्व जब विशिष्ट स्थिति उत्पन्न होने पर निकाल सकते है इस समस्या को हल करने का तरीका यह है:
ArrayList<User> list = new ArrayList<User>();
list.add(new User("user1","password1"));
list.add(new User("user2","password2"));
list.add(new User("user3","password3"));
list.add(new User("user4","password4"));
Iterator<String> iter = list.iterator();
while (iter.hasNext())
{
User user = iter.next();
if(user.name.equals("user1"))
{
//Use iterator to remove this User object.
iter.remove();
}
}
ऑब्जेक्ट को निकालने के लिए इटरेटर का उपयोग करना ArrayList(Object)
टाइप करके हटाने से अधिक कुशल है क्योंकि यह अधिक तेज़ और 20% अधिक समय बचाने और जावा संग्रह के लिए एक मानक जावा अभ्यास है।
ArrayList<User> userList=new ArrayList<>();
//load data
public void removeUser(String userName){
for (User user: userList){
if(user.getName()equals(userName)){
userList.remove(user);
}
}
}
प्रत्येक http://stackoverflow.com/questions/223918/iterating-through-a-collection-avoiding-concurrentmodificationexception-when-re के लिए पुनरावृत्ति करते समय हटा नहीं सकता – Gangaraju
- 1. मैं किसी साझा ऑब्जेक्ट से प्रतीक कैसे हटा सकता हूं?
- 2. मैं जावा ऐरेलिस्ट से अनुक्रमिक तत्वों को कैसे हटा सकता हूं?
- 3. जावा में ऐरेलिस्ट से विशिष्ट ऑब्जेक्ट को कैसे निकालें?
- 4. मैं बिना किसी लोडिंग के एंटिटी फ्रेमवर्क मॉडल से किसी ऑब्जेक्ट को कैसे हटा सकता हूं?
- 5. मैं जावास्क्रिप्ट के साथ किसी सरणी से ऑब्जेक्ट को कैसे हटा सकता हूं?
- 6. मैं Google geoChart से किंवदंती को कैसे हटा सकता हूं?
- 7. मैं पंक्तियों को कैसे हटा सकता हूं?
- 8. मैं जावा में किसी विशेष स्ट्रिंग से विशिष्ट वर्ण कैसे हटा सकता हूं?
- 9. जावा में, मैं एक स्क्लाइट टेबल कैसे हटा सकता हूं?
- 10. अपाचे विकेट में किसी घटक से मैं AjaxSelfUpdatingTimerBehavior को सही ढंग से कैसे हटा सकता हूं?
- 11. मैं किसी संवाद द्वारा संदर्भित ऑब्जेक्ट को कैसे हटा सकता हूं?
- 12. मैं टेम्पलेट से उपयोगकर्ता श्रेणी को कैसे हटा सकता हूं?
- 13. मैं UIViewController से UINavigationBar को कैसे हटा सकता हूं?
- 14. मैं QTreeWidgetItem को एक QTreeWidget से कैसे हटा सकता हूं?
- 15. मैं सत्र चर को कैसे हटा या हटा सकता हूं?
- 16. जावा में ऐरेलिस्ट और
- 17. ऐरेलिस्ट - किसी ऑब्जेक्ट के सदस्य को कैसे संशोधित करें?
- 18. मैं जावा ऑब्जेक्ट से एचटीएमएल कैसे उत्पन्न कर सकता हूं?
- 19. मैं जावा में एक ऐरेलिस्ट से बाहर ArrayList कैसे टुकड़ा कर सकता हूं?
- 20. मैं तारों से स्लेश को कैसे हटा सकता हूं?
- 21. मैं आईआईएस ऑब्जेक्ट्स को सी # से कैसे हटा सकता हूं?
- 22. Node.js - मैं यूआरएल से पोर्ट को कैसे हटा सकता हूं?
- 23. क्लोजर में अनुक्रम से किसी आइटम को मैं कैसे हटा सकता हूं?
- 24. मैं MySQL में रिक्त पंक्तियों को कैसे हटा सकता हूं?
- 25. मैं वर्तमान निर्देशिका में उपनिर्देशिका को कैसे हटा सकता हूं?
- 26. मैं jQuery में बच्चों को कैसे हटा सकता हूं?
- 27. मैं बाज़ार में अनवरोधित फ़ाइलों को कैसे हटा सकता हूं?
- 28. मैं वाईआई में पंक्तियों को कैसे हटा सकता हूं?
- 29. मैं पायथन में अग्रणी व्हाइटस्पेस को कैसे हटा सकता हूं?
- 30. मैं सीएसएस में पृष्ठभूमि-छवि को कैसे हटा सकता हूं?
क्या आप अपने प्रश्न का अधिक सटीक वर्णन कर सकते हैं? जिस कोड पर आप काम कर रहे हैं उसका एक स्निपेट लिखें ... – aleroot