Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

लिस्ट में सबलिस्ट खोजने के लिए Java प्रोग्राम


इस लेख में, हम समझेंगे कि लिस्ट में सबलिस्ट कैसे खोजें। एक लिस्ट एक क्रमबद्ध संग्रह है जो हमें एलिमेंट्स को क्रमिक रूप से स्टोर और एक्सेस करने की अनुमति देती है। इसमें एलिमेंट्स को इंसर्ट, अपडेट, डिलीट और खोजने के लिए इंडेक्स-आधारित मेथड्स होते हैं। इसमें डुप्लिकेट एलिमेंट्स भी हो सकते हैं। लिस्ट का एक भाग या उपसमूह सबलिस्ट कहलाता है।

नीचे इसका प्रदर्शन है:

मान लीजिए हमारा इनपुट है:

इनपुट लिस्ट: [101, 102, 103, 104, 105, 106, 107, 108, 109]
शुरुआत इंडेक्स: 3
अंत इंडेक्स: 6

वांछित आउटपुट होगा:

3 इंडेक्स पोजीशन से 6 इंडेक्स पोजीशन तक के एलिमेंट्स हैं: [104, 105, 106]

एल्गोरिदम

चरण 1 - शुरू
चरण 2 - एक इंटीजर लिस्ट घोषित करें जिसका नाम input_list हो
चरण 3 - मान परिभाषित करें
चरण 4 - इंडेक्स मान 3 और 6 के बीच सबलिस्ट बनाने के लिए subList(3,6) फंक्शन का उपयोग करें
चरण 5 - परिणाम प्रदर्शित करें
चरण 6 - रुकें

उदाहरण 1

यहाँ, हम सभी ऑपरेशन्स को 'main' फंक्शन के तहत बांधते हैं।

import java.util.LinkedList;
import java.util.List;

public class Demo {
    public static void main(String[] args) {
        int index_start = 3;
        int index_end = 6;
        List input_list = new LinkedList<>();
        
        for (int i = 1; i <= 9; i++) {
            input_list.add(i + 100);
        }
        
        System.out.println("लिस्ट परिभाषित है: " + input_list);
        List sublist = input_list.subList(index_start, index_end);
        System.out.println(index_start + " इंडेक्स पोजीशन से " + index_end + " इंडेक्स पोजीशन तक के एलिमेंट्स हैं: " + sublist);
    }
}

आउटपुट

लिस्ट परिभाषित है: [101, 102, 103, 104, 105, 106, 107, 108, 109]
3 इंडेक्स पोजीशन से 6 इंडेक्स पोजीशन तक के एलिमेंट्स हैं: [104, 105, 106]

उदाहरण 2

यहाँ, हम ऑपरेशन्स को फंक्शन्स में एनकैप्सुलेट करते हैं जो ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग प्रदर्शित करते हैं।

import java.util.LinkedList;
import java.util.List;

public class Demo {
    static void sublist(List input_list, int index_start, int index_end) {
        List sub = input_list.subList(index_start, index_end);
        System.out.println(index_start + " इंडेक्स पोजीशन से " + index_end + " इंडेक्स पोजीशन तक के एलिमेंट्स हैं: " + sub);
    }
    
    public static void main(String[] args) {
        int index_start = 3;
        int index_end = 6;
        List input_list = new LinkedList<>();
        
        for (int i = 1; i <= 9; i++) {
            input_list.add(i + 100);
        }
        
        System.out.println("लिस्ट परिभाषित है: " + input_list);
        sublist(input_list, index_start, index_end);
    }
}

आउटपुट

लिस्ट परिभाषित है: [101, 102, 103, 104, 105, 106, 107, 108, 109]
3 इंडेक्स पोजीशन से 6 इंडेक्स पोजीशन तक के एलिमेंट्स हैं: [104, 105, 106]

subList() महत्वपूर्ण विशेषताएं

  • व्यू, कॉपी नहीं: subList मूल लिस्ट का व्यू लौटाता है, स्वतंत्र कॉपी नहीं
  • बैकिंग लिस्ट पर प्रभाव: सबलिस्ट में परिवर्तन मूल लिस्ट को प्रभावित करते हैं और इसके विपरीत
  • रेंज: fromIndex (समावेशी) से toIndex (अनन्य) - [fromIndex, toIndex)
  • स्ट्रक्चरल मॉडिफिकेशन: बैकिंग लिस्ट पर स्ट्रक्चरल परिवर्तन सबलिस्ट को अमान्य कर देते हैं

सबलिस्ट ऑपरेशन्स

List list = new ArrayList<>(Arrays.asList(1,2,3,4,5,6,7,8,9));
List sub = list.subList(3, 6);  // [4, 5, 6]

// सबलिस्ट के माध्यम से संशोधन (मूल को प्रभावित करता है)
sub.set(0, 99);        // list अब [1,2,3,99,5,6,7,8,9]
sub.add(10);           // list अब [1,2,3,99,5,6,10,7,8,9]
sub.remove(1);         // list अब [1,2,3,99,6,10,7,8,9]

// स्वतंत्र कॉपी बनाने के लिए
List independentCopy = new ArrayList<>(list.subList(3, 6));

// सबलिस्ट पर Stream ऑपरेशन्स
long count = list.subList(3, 6).stream().filter(x -> x > 5).count();

सामान्य त्रुटियां

  • IndexOutOfBoundsException: यदि fromIndex < 0 या toIndex > size या fromIndex > toIndex
  • ConcurrentModificationException: बैकिंग लिस्ट संशोधित होने पर सबलिस्ट पर इटरेट करना
  • सीरियलाइज़ेशन: सबलिस्ट सीरियलाइज़ेबल नहीं है

विकल्प

तरीकाकोडविशेषताएं
subList()list.subList(from, to)व्यू, O(1), बैकिंग लिस्ट से जुड़ा
Stream + skip/limitlist.stream().skip(from).limit(to-from).collect(toList())कॉपी, फंक्शनल, फिल्टरिंग के साथ चेन करने योग्य
नया ArrayListnew ArrayList<>(list.subList(from, to))स्वतंत्र कॉपी, O(k) स्पेस
Arrays.copyOfRangeArrays.copyOfRange(list.toArray(), from, to)ऐरे के लिए, प्रिमिटिव्स के लिए काम करता है
  1. Java प्रोग्राम: ट्रैपेज़ियम (Trapezium) का क्षेत्रफल ज्ञात करें Java प्रोग्राम: ट्रैपेज़ियम (Trapezium) का क्षेत्रफल ज्ञात करें

    इस लेख में, हम समझेंगे कि ट्रैपेज़ियम का क्षेत्रफल कैसे ज्ञात करें। ट्रैपेज़ियम एक प्रकार का चतुर्भुज है जिसमें कम से कम एक जोड़ी भुजाएं एक-दूसरे के समानांतर होती हैं। ट्रैपेज़ियम की समानांतर भुजाओं को बेस कहा जाता है और असमानांतर भुजाओं को लेग्स कहा जाता है। इसे ट्रेपेजॉयड भी कहा जाता है।ट्रैपेज़िय

  1. जावा प्रोग्राम: वर्ग का क्षेत्रफल निकालना जावा प्रोग्राम: वर्ग का क्षेत्रफल निकालना

    इस लेख में हम समझेंगे कि वर्ग का क्षेत्रफल कैसे निकाला जाता है। वर्ग का क्षेत्रफल: साइड × साइड = साइड² डेमोनस्ट्रेशन इनपुट: भुजा की लंबाई: 4 आउटपुट: वर्ग का क्षेत्रफल: 16 एल्गोरिदम चरण 1 - शुरू चरण 2 - दो इंटीजर वेरिएबल घोषित करें: my_side, my_area चरण 3 - उपयोगकर्ता से मान पढ़ें या परिभाषित क

  1. जावा प्रोग्राम से आयत का परिमाप (Perimeter of Rectangle) निकालना जावा प्रोग्राम से आयत का परिमाप (Perimeter of Rectangle) निकालना

    इस लेख में हम समझेंगे कि आयत का परिमाप कैसे निकाला जाता है। आयत का परिमाप आयत की सभी भुजाओं की लंबाई को जोड़कर निकाला जाता है। नीचे एक आयत का प्रदर्शन दिया गया है। आयत का परिमाप आयत की दो लंबाई और दो चौड़ाई की कुल लंबाई होती है: इनपुट मान लीजिए हमारा इनपुट है: आयत की भुजाओं की लंबाई हैं: 5, 8, 5,