List Partitioning এবং Partitioned Lists

Java Technologies - অ্যাপাচি কমন্স কালেকশনস (Apache Common Collection) CollectionUtils এর উন্নত ব্যবহার |
133
133

List Partitioning হলো একটি বড় তালিকাকে (list) ছোট ছোট তালিকায় বিভক্ত করার একটি কৌশল। অ্যাপাচি কমন্স কালেকশনস (Apache Commons Collections) এই কাজটি সহজে করার জন্য ListUtils.partition() মেথড সরবরাহ করে। এটি বিশেষত বড় ডেটাসেট পরিচালনা করার সময় কার্যকর, যেখানে তালিকার উপাদানগুলো ছোট ছোট ভাগে বিভক্ত করে প্রক্রিয়া করা সহজ হয়।


List Partitioning এর ধারণা

List Partitioning এর মাধ্যমে একটি মূল তালিকাকে নির্দিষ্ট আকারের (fixed size) ভাগে বিভক্ত করা হয়। উদাহরণস্বরূপ:

মূল তালিকা: [1, 2, 3, 4, 5, 6, 7]
প্রতিটি ভাগে সর্বাধিক ৩টি আইটেম রাখলে আউটপুট হবে: [[1, 2, 3], [4, 5, 6], [7]]


List Partitioning এর ব্যবহার

import org.apache.commons.collections4.ListUtils;

import java.util.ArrayList;
import java.util.List;

public class ListPartitionExample {
    public static void main(String[] args) {
        // বড় একটি তালিকা তৈরি
        List<Integer> numbers = new ArrayList<>();
        for (int i = 1; i <= 10; i++) {
            numbers.add(i);
        }

        // তালিকাকে ৩-এর ভাগে ভাগ করা
        List<List<Integer>> partitionedLists = ListUtils.partition(numbers, 3);

        // প্রতিটি ভাগ প্রিন্ট করা
        for (List<Integer> partition : partitionedLists) {
            System.out.println(partition);
        }
    }
}

আউটপুট:

[1, 2, 3]  
[4, 5, 6]  
[7, 8, 9]  
[10]  

Partitioned Lists এর বৈশিষ্ট্য

  1. ফিক্সড সাইজের ভাগ:
    প্রতিটি ভাগে নির্দিষ্ট সংখ্যক উপাদান থাকে।
  2. শেষ ভাগ ছোট হতে পারে:
    যদি মূল তালিকার উপাদান সংখ্যা ফিক্সড সাইজ দ্বারা বিভাজ্য না হয়, তাহলে শেষ ভাগ ছোট হবে।
  3. মূল তালিকার সাথে সম্পর্ক:
    ভাগগুলো মূল তালিকার ভিউ (view) হিসেবে কাজ করে। তাই মূল তালিকায় কোনো পরিবর্তন করলে তা ভাগগুলোতেও প্রতিফলিত হবে।

ব্যবহারিক প্রয়োগ

১. বড় ডেটাসেট প্রক্রিয়াকরণ

List Partitioning বড় ডেটাসেট প্রক্রিয়াকরণের ক্ষেত্রে অত্যন্ত কার্যকর। যেমন:

  • ডেটাবেস থেকে রেকর্ড পড়ে প্রক্রিয়াকরণ করা।
  • API-তে ডেটা পাঠানো যেখানে প্রতিটি অনুরোধে সীমিত সংখ্যক রেকর্ড অনুমোদিত।
public void processInBatches(List<String> records) {
    int batchSize = 100; // প্রতিটি ব্যাচে ১০০ রেকর্ড
    List<List<String>> batches = ListUtils.partition(records, batchSize);

    for (List<String> batch : batches) {
        // প্রতিটি ব্যাচ প্রসেস করা
        sendToApi(batch);
    }
}

private void sendToApi(List<String> batch) {
    // API-তে ব্যাচ প্রেরণ করার লজিক
    System.out.println("Sending batch: " + batch);
}

২. প্যারালাল প্রসেসিং

তালিকাকে ভাগ করে বিভিন্ন থ্রেডে প্রক্রিয়াকরণের জন্য List Partitioning ব্যবহার করা যায়।

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class ParallelProcessingExample {
    public static void main(String[] args) {
        List<Integer> numbers = new ArrayList<>();
        for (int i = 1; i <= 100; i++) {
            numbers.add(i);
        }

        List<List<Integer>> partitions = ListUtils.partition(numbers, 10);
        ExecutorService executor = Executors.newFixedThreadPool(5);

        for (List<Integer> partition : partitions) {
            executor.submit(() -> {
                System.out.println("Processing partition: " + partition);
            });
        }

        executor.shutdown();
    }
}

Partitioning এর সুবিধা

  1. বড় তালিকা পরিচালনা সহজ করা:
    বড় তালিকা ছোট ছোট তালিকায় ভাগ করে ব্যবস্থাপনা ও প্রসেসিং সহজ হয়।
  2. স্মৃতিশক্তির ব্যবহার কমানো:
    ছোট অংশে বিভক্ত করে মেমোরি ব্যবস্থাপনা কার্যকর করা যায়।
  3. প্যারালাল প্রসেসিং সাপোর্ট:
    তালিকার প্রতিটি অংশ আলাদাভাবে থ্রেড বা প্রক্রিয়ায় প্রক্রিয়া করা যায়।
  4. পোর্টেবল এবং পুনঃব্যবহারযোগ্য:
    ListUtils.partition() একটি নির্ভরযোগ্য এবং পুনঃব্যবহারযোগ্য সমাধান।

সতর্কতা

  • মূল তালিকার পরিবর্তন:
    ভাগগুলো মূল তালিকার ভিউ হিসেবে কাজ করে। তাই মূল তালিকার পরিবর্তন ভাগগুলোর ডেটাতেও প্রভাব ফেলবে।
  • নালপয়েন্টার এক্সসেপশন এড়ানো:
    নিশ্চিত করুন যে তালিকা null নয় এবং ফিক্সড সাইজ ধনাত্মক সংখ্যা।

সারাংশ

List Partitioning বড় তালিকা পরিচালনার একটি কার্যকর উপায়, যা অ্যাপাচি কমন্স কালেকশনসের ListUtils.partition() মেথড ব্যবহার করে সহজেই করা যায়। এটি ডেটাসেট পরিচালনা, প্যারালাল প্রসেসিং, এবং API কলের মতো বিভিন্ন ক্ষেত্রে প্রয়োগ করা হয়।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion