কম্পিউটার টিউটোরিয়াল

Android ListView-এ দুটি অ্যারে থেকে কমন এলিমেন্ট (Common Elements) বের করা

দুটি স্ট্রিং অ্যারে থেকে সাধারণ (Common) এলিমেন্ট বের করে ListView-এ দেখানো

এই উদাহরণে দুটি অ্যারে থেকে সাধারণ মানগুলো বের করে একটি ListView-এ প্রদর্শন করা দেখানো হলো।

লেআউট (activity_main.xml)

<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center_horizontal"
    android:layout_marginTop="30dp"
    tools:context=".MainActivity">

    <ListView
        android:id="@+id/list"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>

MainActivity.java - নেস্টেড লুপ পদ্ধতি (O(n×m))

package com.example.myapplication;

import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import androidx.appcompat.app.AppCompatActivity;
import java.util.ArrayList;
import java.util.Arrays;

public class MainActivity extends AppCompatActivity {

    ListView listView;
    String[] names = new String[]{"A", "B", "C"};
    String[] extended = new String[5];

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        listView = findViewById(R.id.list);

        extended[3] = "D";
        extended[4] = "E";
        System.arraycopy(names, 0, extended, 0, names.length); // extended = [A,B,C,D,E]

        // কমন এলিমেন্ট বের করা (Nested Loop)
        ArrayList<String> common = new ArrayList<>();
        for (int i = 0; i < names.length; i++) {
            for (int j = 0; j < extended.length; j++) {
                if (names[i].equals(extended[j])) { // String তুলনা .equals() দিয়ে
                    common.add(names[i]);
                }
            }
        }

        ArrayAdapter<String> adapter = new ArrayAdapter<>(this,
                android.R.layout.simple_list_item_1, common);
        listView.setAdapter(adapter);
    }
}

অপ্টিমাইজড পদ্ধতি: HashSet ব্যবহার (O(n+m))

// HashSet ব্যবহার করে দ্রুত কমন এলিমেন্ট বের করা
HashSet<String> set1 = new HashSet<>(Arrays.asList(names));
HashSet<String> set2 = new HashSet<>(Arrays.asList(extended));

// Intersection (সাধারণ এলিমেন্ট)
set1.retainAll(set2); // set1 এখন শুধু কমন এলিমেন্ট ধারণ করবে
ArrayList<String> common = new ArrayList<>(set1);

// অথবা Java 8 Stream API (API 24+)
List<String> commonStream = Arrays.stream(names)
    .filter(s -> Arrays.asList(extended).contains(s))
    .distinct()
    .collect(Collectors.toList());

পারফরম্যান্স তুলনা

পদ্ধতিটাইম কমপ্লেক্সিটিস্পেসউপযুক্ত
Nested LoopO(n×m)O(min(n,m))ছোট অ্যারে (n,m < 100)
HashSet retainAllO(n+m)O(n+m)বড় অ্যারে, ডুপ্লিকেট না থাকলে
Sort + Two PointerO(n log n + m log m)O(1)সোর্টেড অ্যারে, মেমরি সীমিত

সতর্কতা

  • String তুলনা == দিয়ে না করে .equals() দিয়ে করুন
  • কেস-সেনসিটিভ: "A" != "a" - প্রয়োজনে toLowerCase() ব্যবহার করুন
  • ডুপ্লিকেট এলিমেন্ট থাকলে HashSet অটোমেটিক্যালি হ্যান্ডেল করে

Android ListView-এ দুটি অ্যারে থেকে কমন এলিমেন্ট (Common Elements) বের করা

  1. অ্যান্ড্রয়েডে URL থেকে ইমেজ ডাউনলোড করার পদ্ধতি

  2. অ্যান্ড্রয়েড ListView-এ ডাইনামিকভাবে এলিমেন্ট যোগ করার পদ্ধতি

  3. অ্যান্ড্রয়েডে ঠিকানা থেকে ল্যাটিটিউড এবং লংগিটিউড বের করা

  4. Android থেকে AirTags খুঁজে বের করার পদ্ধতি?