Sets, Queues

Java में डेटा टाइप्स और Exceptions

Jim White

Java Developer

Set इंटरफ़ेस

  • Set भी Collection का एक प्रकार है
    • डुप्लिकेट ऑब्जेक्ट्स नहीं मानता
      • हर एलिमेंट को यूनिक रखता है
    • Set ऑब्जेक्ट्स आम तौर पर unordered होते हैं (इसलिए index नहीं होता)
  • List ऑब्जेक्ट्स के लिए पिल बॉक्स जैसी होती है; हर ऑब्जेक्ट बॉक्स में तय जगह पर होता है
  • Set ऑब्जेक्ट्स के लिए बोरी जैसा होता है; ऑब्जेक्ट्स बोरी में रैंडम पड़े होते हैं

Lists पिल-ऑर्गनाइज़र जैसी हैं जहाँ ऑब्जेक्ट्स एक तय स्थान पर index पर stored रहते हैं

Sets बोरियों जैसी हैं जहाँ ऑब्जेक्ट्स रैंडम और unordered रखे होते हैं

1 Images courtesy Wikimedia Commons
Java में डेटा टाइप्स और Exceptions

List बनाम Set

  • Set कब उपयोग करें
    • एलिमेंट्स की यूनिकनेस की गारंटी देता है
    • लुकअप्स तेज होते हैं
      • चेक करना कि कोई ऑब्जेक्ट Set में है या नहीं
    • कलेक्शन बड़ा होने पर मेमोरी अधिक कुशल
    • कैश में मेंबरशिप टेस्टिंग के लिए अच्छा
      • उदाहरण: किसी डॉक्यूमेंट में यूनिक शब्द ढूँढना
Java में डेटा टाइप्स और Exceptions

List बनाम Set

  • List कब उपयोग करें
    • एलिमेंट्स का ऑर्डर बचाए रखता है और डुप्लिकेट्स की अनुमति देता है
    • पोज़िशन से एलिमेंट एक्सेस में बेहतर परफॉर्म करता है
    • index से एलिमेंट जोड़ने/हटाने में बेहतर
    • जब एलिमेंट्स का क्रम महत्वपूर्ण हो
      • जैसे: किसी सीक्वेंस के स्टेप्स या प्लेलिस्ट में गाने
Java में डेटा टाइप्स और Exceptions

Set implementation

  • Set की कई implementations
    • HashSet एक लोकप्रिय implementation
  • HashSet
    • ऑब्जेक्ट्स का एक unordered बैग
    • insert, delete और lookup के लिए बाकी Set implementations से तेज
    • आमतौर पर बाकी Set implementations से ज़्यादा मेमोरी लेता है
    • एक null स्टोर करने देता है

HashSet unordered bags हैं जो एक null अनुमति देता है

Java में डेटा टाइप्स और Exceptions

HashSet construction

  • HashSet बनाने के लिए generic parameterized constructor का उपयोग करें
    HashSet<String> set = new HashSet<String>();
    
  • HashSet java.util पैकेज में मिलता है
    • import चाहिए
    • import java.util.HashSet
Java में डेटा टाइप्स और Exceptions

HashSet methods

  • ऑब्जेक्ट्स जोड़ने/हटाने के लिए .add() और .remove() उपयोग करें
  • किसी ऑब्जेक्ट को रिप्लेस करने के लिए पहले .remove() फिर .add() करें
  • चेक करने के लिए कि ऑब्जेक्ट पहले से है, .contains() उपयोग करें
  • डुप्लिकेट्स इग्नोर होते हैं
  • null की अनुमति है
  • ऑर्डर की गारंटी नहीं
set.add("France");
set.add("Japan");
set.add("Brazil");
set.add("Egypt");
set.add(null); // null is allowed
set.remove("Brazil");
boolean z =
  set.contains("France"); // z is true
set.add("Japan"); // Ignored
System.out.println(set);
[null, Japan, Egypt, France]
Java में डेटा टाइप्स और Exceptions

Queue इंटरफ़ेस

  • Queue डेटा स्ट्रक्चर ऑब्जेक्ट्स को first in, first out (FIFO) क्रम में प्रोसेस करता है
    • जो पहले जोड़ा गया, वही पहले निकलेगा
    • जैसे टिकट काउंटर की लाइन
    • इसमें head और tail ऑब्जेक्ट होते हैं

Queue की इमेज जिसमें head (start) और tail (end) दिखाए गए हैं

  • Queue की कई implementations
    • व्यवहार और operations में समान
Java में डेटा टाइप्स और Exceptions

ArrayBlockingQueue

  • लोकप्रिय Queue implementation
    • भीतर से एक array
  • ध्यान दें: ArrayBlockingQueue java.util.concurrent पैकेज में है
    • java.util पैकेज में नहीं
Java में डेटा टाइप्स और Exceptions

ArrayBlockingQueue construction

  • ArrayBlockingQueue बनाने के लिए generic parameterized constructor उपयोग करें
    • इसमें capacity या ऑब्जेक्ट-काउंट लिमिट constructor से तय होती है
import java.util.concurrent;  // क्लास के शीर्ष पर

// 4 Strings स्टोर करने वाली नई queue बनाएँ
ArrayBlockingQueue<String> queue = new ArrayBlockingQueue<String>(4);
Java में डेटा टाइप्स और Exceptions

ArrayBlockingQueue methods

  • टेल पर जोड़ने के लिए .add(object) या .offer(object) का उपयोग करें
    • Queue capacity पर हो तो .add(object) exception थ्रो करता है
    • capacity पर होने पर .offer(object) नए ऑब्जेक्ट को इग्नोर करता है
ArrayBlockingQueue<String> queue 
    = new ArrayBlockingQueue<String>(4);
queue.offer("France");
queue.offer("Japan");
queue.offer("Brazil");
queue.offer("Egypt");
queue.offer("China"); // Ignores China

// Causes IllegalStateException
// queue.add("China");

System.out.println(queue);
[France, Japan, Brazil, Egypt]
Java में डेटा टाइप्स और Exceptions

ArrayBlockingQueue methods

  • हेड से हटाने के लिए .remove() या .poll() उपयोग करें
    • Queue खाली होने पर .remove() exception थ्रो करता है
    • Queue खाली होने पर .poll() null लौटाता है
  • null की अनुमति नहीं
ArrayBlockingQueue<String> queue 
    = new ArrayBlockingQueue<String>(4);
String x = queue.poll(); // x is null
// Causes NoSuchElementException
// String y = queue.remove();

queue.offer("France");
String next = queue.poll();
System.out.println(next);
France
Java में डेटा टाइप्स और Exceptions

अभ्यास करते हैं!

Java में डेटा टाइप्स और Exceptions

Preparing Video For Download...