ArrayList प्रविष्टि और पुनः प्राप्ति आदेश


88

मान लीजिए मैं एक में 5 तार सम्मिलित करता हूं ArrayList। क्या सम्मिलन और पुनः प्राप्ति का क्रम ArrayListसमान होगा?


88
इसे एक बार आजमाना एक बात है। यह सुनिश्चित करने के लिए एक और है कि यह हर बार एक ही होने वाला है।
सुरगाछ

जवाबों:


82

नीचे दिए गए कोड की जाँच करें और इसे चलाएं:

public class ListExample {

    public static void main(String[] args) {
        List<String> myList = new ArrayList<String>();
        myList.add("one");
        myList.add("two");
        myList.add("three");
        myList.add("four");
        myList.add("five");

        System.out.println("Inserted in 'order': ");
        printList(myList);
        System.out.println("\n");
        System.out.println("Inserted out of 'order': ");

        // Clear the list
        myList.clear();

        myList.add("four");
        myList.add("five");
        myList.add("one");
        myList.add("two");
        myList.add("three");

        printList(myList);
    }

    private static void printList(List<String> myList) {
        for (String string : myList) {
            System.out.println(string);
        }
    }
}

निम्नलिखित उत्पादन करता है:

Inserted in 'order': 
one
two
three
four
five


Inserted out of 'order': 
four
five
one
two
three

विस्तृत जानकारी के लिए, कृपया दस्तावेज़ देखें: List (Java Platform SE7)


8
जावा डॉक के लिंक को शामिल करने के लिए +1 जो स्पष्ट रूप से बताता है कि ऑर्डर करना।
ओगरे Psalm33

20
नमूना उत्पादन उपयोगी होगा
नीलेश

1
बहुत बढ़िया उदाहरण है। इसके लिए +1।
पवन तिवारी

123

जी हां । ArrayList एक क्रमिक सूची है । तो, प्रविष्टि और पुनर्प्राप्ति क्रम समान है।

यदि आप पुनर्प्राप्ति के दौरान तत्व जोड़ते हैं , तो आदेश समान नहीं रहेगा।


1
यदि अंत में ओपी "आवेषण", जिसे जोड़ना भी कहा जाता है।
पीटर लॉरी

2
दूसरे कथन का अर्थ है कि यदि एक थ्रेड द्वारा पुनर्प्राप्ति के समय एक और धागा एक नए तत्व को जोड़ने के लिए हस्तक्षेप करता है। तब आदेश समान नहीं रहता है
xpioneer

38

यदि आप हमेशा अंत तक जोड़ते हैं, तो प्रत्येक तत्व को अंत में जोड़ा जाएगा और जब तक आप इसे नहीं बदलते तब तक इस तरह से रहें।

यदि आप हमेशा शुरुआत में सम्मिलित करते हैं, तो प्रत्येक तत्व आपके द्वारा जोड़े गए रिवर्स ऑर्डर में दिखाई देगा।

यदि आप उन्हें बीच में सम्मिलित करते हैं, तो आदेश कुछ और होगा।


12

हां, हमेशा ऐसा ही रहेगा। से प्रलेखन

इस सूची के अंत में निर्दिष्ट तत्व को लागू करता है। पैरामीटर: इस सूची में संलग्न होने वाला ई तत्व रिटर्न: सच (जैसा कि संग्रह द्वारा निर्दिष्ट किया गया है। jd.lang.Object)

ArrayList add()कार्यान्वयन

public boolean More ...add(E e) {
    ensureCapacity(size + 1);  // Increments modCount!!
    elementData[size++] = e;
    return true;
}

-1

हाँ वही रहता है। लेकिन आसानी से इसका परीक्षण क्यों नहीं किया गया? एक ArrayList बनाएं, इसे भरें और फिर तत्वों को पुनः प्राप्त करें!


19
हालांकि यह कोई सबूत नहीं है।
योतेंगो यूएनएलसीडी

1
समान आदेश परीक्षण के संभावित परिणामों में से एक है। यदि कार्यान्वयन ब्लैकबॉक्स है, तो समान आदेश विशिष्ट मामला हो सकता है। उदाहरण सूची की तरह है। यदि आप क्रमबद्ध सूची में तत्वों को उचित क्रम में जोड़ते हैं, तो आप उन्हें क्रमबद्ध क्रम में प्राप्त कर सकते हैं (जो कि केवल एक विशेष मामला है), लेकिन यदि आप उन्हें यादृच्छिक क्रम में जोड़ते हैं तो आप उन्हें आदेश देते हैं। कार्यान्वयन की जाँच के बिना ArrayList का परीक्षण करना केवल "शायद सबसे अधिक समान आदेश है" राज्य बताएगा।
सिमर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.