के साथ आता है क्योंकि आप cons
समारोह का उल्लेख उपयोग करते हैं, मुझे लगता है कि आप cons
कोशिकाओं से बना जुड़ा हुआ सूचियों का वैचारिक मॉडल के साथ इस समस्या तक पहुंचने वाले हैं ग्रहण करेगा। विशेष रूप से, मुझे लगता है कि आप प्रत्येक सूची के बारे में सोच रहे हैं जिसमें car
(पहला तत्व) और cdr
(उपरोक्त सभी तत्व शामिल हैं)।
जावा लिंक्ड सूचियों को java.util.LinkedList
के रूप में समर्थन देता है। ये रैखिक ट्रैवर्सल के लिए अच्छे हैं और तत्वों को बहुत कुशलतापूर्वक डाला जा सकता है। ये ऊपर वर्णित लिंक्ड सूचियों के समान हैं।
जावा भी java.util.ArrayList
प्रदान करता है। इस प्रकार की सूची यादृच्छिक पहुंच के लिए अच्छी है, लेकिन तत्वों को सम्मिलित करते समय धीमा हो सकता है। वास्तव में, सूची की शुरुआत में तत्व डालने पर वे सबसे धीमे होते हैं। चूंकि ArrayList
एस दृश्यों के पीछे सरणी के रूप में कार्यान्वित किए जाते हैं, इसलिए प्रत्येक तत्व को नए तत्व के लिए जगह बनाने के लिए सूची में एक स्थिति आगे की प्रतिलिपि बनाई जानी चाहिए। अब, यदि आपको एक बड़ी सरणी की आवश्यकता होती है, तो ArrayList
एक नई सरणी आवंटित करेगा, सभी तत्वों को कॉपी करेगा, और इसी तरह।
(इसलिए यह संभावना अधिक उत्तरार्द्ध के समान है गूगल के ImmutableList
, "यादृच्छिक अभिगम" के रूप में उद्धृत किया गया है।)
आप अपने cons
विधि का उपयोग करने अक्सर, मैं जुड़ा हुआ सूचियों के साथ यह उपयोग करने की अनुशंसा की योजना है। एक cons
ऑपरेशन अनिवार्य रूप से एक सूची की शुरुआत में एक तत्व जोड़ रहा है। यह सरणी जैसे रैखिक संरचनाओं के साथ थोड़ा सा समझ में आता है। मैं इस कारण से सरणी सूचियों का उपयोग करने की सलाह देता हूं: कि वे नौकरी के लिए अवधारणात्मक रूप से गलत हैं।
बहुत picky के लिए: क्योंकि एक नई सूची हर बार cons
कहा जाता है लौटा दिया जाता है, नकल होने चाहिए कि क्या सूची एक LinkedList
या एक ArrayList
है। हालांकि, cons
ऑपरेशन का पूरा प्रिंसिपल यह है कि यह एक लिंक्ड सूची पर काम कर रहा है।
public <E> LinkedList<E> cons(E car, List<E> cdr) {
LinkedList<E> destination = new LinkedList<E>(cdr);
destination.addFirst(car);
return destination;
}
ध्यान दें कि उपरोक्त कोड ऊपर जवाब पढ़ने के बाद लिखा गया था, इसलिए मैं किसी भी आकस्मिक साहित्यिक चोरी के लिए हमें खेद है। यदि आप इसे देखते हैं तो मुझे बताएं और मैं ठीक से स्वीकार करूंगा।
मान लें कि आप एक LinkedList
लौटने से खुश हैं, आप इस उदाहरण में cdr
रूप ImmutableList
उपयोग कर सकते हैं।
लिस्प के साथ नहीं परिचित हम में से उन लोगों के लिए , क्या विपक्ष है? –
मैंने व्यवहार को परिभाषित किया और एक उदाहरण दिया। आपको और क्या चाहिए? –