Range এর ধারণা এবং প্রয়োগ

Range এবং Rangeset - গুয়াভা (Guava) - Java Technologies

319

Guava লাইব্রেরি Range ক্লাসটি Java Collections Framework এর বাইরে একটি শক্তিশালী এবং ব্যবহারযোগ্য ক্লাস। এটি রেঞ্জ বা সীমা ব্যবস্থাপনার জন্য ব্যবহৃত হয়, বিশেষত যখন আপনাকে একটি সংখ্যা বা ডেটা সেটের মধ্যে সীমা নির্ধারণ করতে হয়। Range আপনাকে minimum, maximum, এবং inclusive/exclusive bounds সম্পর্কে কার্যকরী উপায়ে কাজ করার সুবিধা দেয়।


Range কী?

Guava এর Range একটি immutable ডেটা স্ট্রাকচার, যা একটি নির্দিষ্ট পরিসরের মধ্যে মানগুলিকে inclusive (শামিল) বা exclusive (বহিঃস্ত) হ্যান্ডল করে। এটি একটি মানের সীমানা বা রেঞ্জ তৈরি করতে ব্যবহৃত হয়, এবং আপনাকে সেই রেঞ্জের মধ্যে বিভিন্ন অপারেশন যেমন checking containment, intersection, এবং clipping করতে দেয়।


Range ক্লাসের মৌলিক বৈশিষ্ট্য

  1. Inclusive/Exclusive Bounds: Range ব্যবহার করে আপনি inclusive (অন্তর্ভুক্ত) বা exclusive (অন্তর্ভুক্ত নয়) সীমানা নির্ধারণ করতে পারেন।
    • Range.closed(start, end) : উভয় সীমানা অন্তর্ভুক্ত।
    • Range.open(start, end) : উভয় সীমানা বহিঃস্ত।
    • Range.closedOpen(start, end) : বাম সীমানা অন্তর্ভুক্ত, ডান সীমানা বহিঃস্ত।
    • Range.openClosed(start, end) : বাম সীমানা বহিঃস্ত, ডান সীমানা অন্তর্ভুক্ত।
  2. Bounded: Range একটি bounded (সীমাবদ্ধ) পরিসরের মধ্যে কাজ করে, যেমন গঠন করা একটি সংখ্যার সীমা।
  3. Containment Checking: এটি সহজে চেক করতে সাহায্য করে যে একটি মান একটি নির্দিষ্ট রেঞ্জের মধ্যে পড়ে কিনা।
  4. Range Operations: Range এর মাধ্যমে আপনি union, intersection, এবং difference অপারেশনগুলোও করতে পারেন।

Range এর তৈরি করার পদ্ধতি

১. Range.closed (inclusive bounds)

এটি এমন একটি রেঞ্জ তৈরি করে যা উভয় সীমানাকে অন্তর্ভুক্ত করে।

Range<Integer> range = Range.closed(1, 10);
System.out.println(range.contains(5)); // true
System.out.println(range.contains(1)); // true
System.out.println(range.contains(10)); // true
System.out.println(range.contains(11)); // false

২. Range.open (exclusive bounds)

এটি এমন একটি রেঞ্জ তৈরি করে যা উভয় সীমানাকে অন্তর্ভুক্ত নয়।

Range<Integer> range = Range.open(1, 10);
System.out.println(range.contains(5)); // true
System.out.println(range.contains(1)); // false
System.out.println(range.contains(10)); // false

৩. Range.closedOpen (left inclusive, right exclusive)

এটি এমন একটি রেঞ্জ তৈরি করে যা বাম সীমানাকে অন্তর্ভুক্ত এবং ডান সীমানাকে বহিঃস্ত রাখে।

Range<Integer> range = Range.closedOpen(1, 10);
System.out.println(range.contains(1)); // true
System.out.println(range.contains(10)); // false

৪. Range.openClosed (left exclusive, right inclusive)

এটি এমন একটি রেঞ্জ তৈরি করে যা বাম সীমানাকে বহিঃস্ত এবং ডান সীমানাকে অন্তর্ভুক্ত রাখে।

Range<Integer> range = Range.openClosed(1, 10);
System.out.println(range.contains(1)); // false
System.out.println(range.contains(10)); // true

Range এর অন্যান্য কার্যক্রম

Range.contains() মেথড

এই মেথডটি চেক করে যে একটি নির্দিষ্ট মান রেঞ্জের মধ্যে পড়ে কিনা।

Range<Integer> range = Range.closed(1, 10);
System.out.println(range.contains(5));  // true
System.out.println(range.contains(15)); // false

Range.encloses() মেথড

এই মেথডটি চেক করে যে একটি রেঞ্জ অন্য একটি রেঞ্জের মধ্যে অন্তর্ভুক্ত কিনা।

Range<Integer> range1 = Range.closed(1, 10);
Range<Integer> range2 = Range.closed(3, 8);
System.out.println(range1.encloses(range2)); // true

Range.intersection() মেথড

এটি দুটি রেঞ্জের intersection (অন্তঃস্থল) বের করে। এটি একটি নতুন রেঞ্জ তৈরি করে যেটি দুটি রেঞ্জের মিল।

Range<Integer> range1 = Range.closed(1, 10);
Range<Integer> range2 = Range.closed(5, 15);
Range<Integer> intersection = range1.intersection(range2);
System.out.println(intersection); // [5..10]

Range.span() মেথড

এটি একটি রেঞ্জের পুরো পরিসরের span বের করে, যা দুটি রেঞ্জের সর্বনিম্ন এবং সর্বোচ্চ সীমানাকে অন্তর্ভুক্ত করে।

Range<Integer> range1 = Range.closed(1, 5);
Range<Integer> range2 = Range.closed(10, 15);
Range<Integer> span = range1.span(range2);
System.out.println(span); // [1..15]

Range-এর প্রয়োগ

১. এটি ব্যবহার করা যায় যখন সীমাবদ্ধতা থাকতে হয়

যখন আপনাকে কোনো পরিসরে মান যাচাই করতে হয়, যেমন একটি পরীক্ষায় নম্বরের সীমানা, অ্যাকাউন্ট ব্যালেন্স, ইত্যাদি, সেখানে Range ব্যবহার করা যেতে পারে।

২. এটি কার্যকরী উপায়ে ডেটা ফিল্টার করার জন্য ব্যবহার করা যেতে পারে

ডেটাবেসের ফলাফল বা অন্যান্য ডেটাসেট ফিল্টার করতে Range ব্যবহার করা যায়।

Range<Integer> validRange = Range.closed(1, 100);
List<Integer> numbers = Arrays.asList(5, 20, 150, 50, 120);

List<Integer> filteredNumbers = numbers.stream()
        .filter(validRange::contains)
        .collect(Collectors.toList());
System.out.println(filteredNumbers); // [5, 20, 50]

৩. সম্মিলন এবং পার্থক্য বের করার জন্য ব্যবহার করা যায়

যখন দুটি রেঞ্জের সম্মিলন বা পার্থক্য বের করার প্রয়োজন হয়, সেখানে Range ক্লাসের intersection এবং span মেথড সহায়ক।


সারাংশ

Guava এর Range ক্লাস Java-তে range-based operations পরিচালনা করার জন্য একটি শক্তিশালী এবং সুবিধাজনক টুল। এটি আপনাকে সংখ্যার সীমানা নির্ধারণ এবং সেগুলির মধ্যে কার্যকরী অপারেশন যেমন containment, intersection, span, এবং enclosure করতে দেয়। Range ক্লাস ব্যবহার করে আপনি Java প্রোগ্রামে functional programming ধারণাকে আরও সহজভাবে বাস্তবায়ন করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...