2013-10-07 5 views
6

मुझे आश्चर्य है कि क्या एक ArrayList में अंतिम से पहले तत्व को फिर से शुरू करना संभव है, यदि ऐसा है तो कैसे? कारण, क्योंकि मैं पिछले तत्व सूची में जोड़ा हटाने की जरूरत हैआखिरी से पहले एक ArrayList कैसे पुनरावृत्त करने के लिए?

+3

क्यों नहीं तुम सिर्फ 'list.remove (list.size करना() - 1) '? –

+1

सूची के एपीआई दस्तावेज को देखने के बारे में कैसे। डॉक्टर में "इटरेटर" की तलाश में मदद करनी चाहिए। –

+0

मेला लेकिन कारण मैं पूछता हूं क्योंकि मुझे फोरैच का उपयोग करने में समस्याएं आ रही हैं और मेरे कोड को बदलने के लिए बदल रहा है और अगला इटरेटर कॉम्बो है, इसलिए मैं अपना कोड कुछ और मजबूत में बदलना चाहता था, अगर यह समझ में आता है –

उत्तर

16

आप अपने ArrayList से हटाया जा रहा आइटम के प्रयोजन के लिए एक ListIterator<T> का उपयोग कर बंद बेहतर होगा यदि आप हमेशा एक सूचकांक का उपयोग कर, इस

List<String> myList = new ArrayList<String>(); 
... add code to populate the list with some data... 
for (int i = myList.size() - 1 ; i >= 0 ; i--) { 
    if (myList.get(i).equals("delete me")) { 
     myList.remove(i); 
    } 
} 

की तरह अपने ArrayList पुनरावृति सकते हैं:

ListIterator<String> listIter = myList.listIterator(); 
while (listIter.hasNext()) { 
    if (listIter.next().equals("delete me")) { 
     listIter.remove(); 
    } 
} 

सूची इटरेटर्स का उपयोग आपकी सूची को पीछे की ओर फिर से चलाने के लिए भी किया जा सकता है - इस तरह:

ListIterator<String> listIter = myList.listIterator(myList.size()); 
while (listIter.hasPrevious()) { 
    String prev = listIter.previous(); 
    // Do something with prev here 
} 

इटरेटर की प्रारंभिक अनुक्रमणिका अंतिम तत्व + 1 के सूचकांक के बराबर होनी चाहिए। docs के रूप में कहें: "previous पर प्रारंभिक कॉल तत्व को निर्दिष्ट सूचकांक के साथ वापस कर देगा।"

+0

लेकिन क्या यह विकल्प पहले से आखिरी तक नहीं जाता है? मुझे तत्वों को सबसे अच्छे तरीके से सबसे पहले संभवतः हटाने की आवश्यकता है, त्रुटियों से कम प्रवण –

+0

@ रिकार्डोचेन्ज़ टिप्पणी इस प्रश्न पर 10 मिनट पहले पोस्ट किया गया था जिसमें 1 तत्व है जो अंतिम तत्व को हटा देता है। यदि यह पर्याप्त नहीं है, तो शायद आपको अपनी आवश्यकता को तेज करने की आवश्यकता है – Cruncher

+1

अंतिम कोड सूची के अंदर "-1" के बिना मेरे लिए काम करता है Iterator() विधि: "myList.listIterator (myList.size());" "-1" के साथ अंतराल अंतिम आइटम से अनदेखा कर रहा था, जो अंतिम से शुरू हो रहा था। – mizerablebr

1

तुम सिर्फ एक सरणी सूची के अंतिम तत्व को दूर करने की जरूरत है, तो आप सिर्फ कर सकता है:

arrayList.remove(arrayList.size()-1); 

यदि आप को दूर करना चाहता था सामने से पीछे से सभी तत्वों, आप पाश के लिए इसका उपयोग कर सकते हैं: सरणी सूचियाँ पर

for(int i = arraList.size()-1; i >= 0; i--) 
{ 
     arrayList.remove(i); 
} 

अधिक जानकारी के लिए, आप यहां जा सकते हैं: http://www.tutorialspoint.com/java/java_arraylist_class.htm

हॉप ई यह मदद करता है।

7

यहाँ एक तरह से यह करने के लिए है (अपने कारण है कि एक अलग सवाल है):

import java.util.*; 

List<String> list = new ArrayList<String>(); 
list.add("a"); 
list.add("b"); 
list.add("c"); 

ListIterator<String> iter = list.listIterator(list.size()); 

while (iter.hasPrevious()) { 
    String s = iter.previous(); 
    System.out.println(s); 
} 
0
ArrayList aList = new ArrayList(); 
aList.add(1); 
aList.add(2); 
aList.add(3); 

Collections.reverse(aList); 

Iterator iter = aList.iterator(); 
while(iter.hasNext()){ 
    iter.next(); 
    iter.remove();//remove an element 
    break;//break from the loop or something else 
} 
+0

जो अंत से शुरुआत तक पुनरावृत्त नहीं होता है। यह संग्रह को उलट देता है, फिर शुरुआत से फिर से शुरू होता है। यह न केवल विनाशकारी है, बल्कि यह भी अक्षम है। –

0
List<String> names = .... 
int count= names.getSize(); 
Iterator<String> i = names.iterator(); 
while (i.hasNext()) { 
    String s = i.next(); // must be called before you can call i.remove() 
    // Do something 
    if (count==1) 
     i.remove(); 
    count--; 
} 
संबंधित मुद्दे