Android-এ Collections.synchronizedSet() ব্যবহার করার টিউটোরিয়াল
এই উদাহরণে দেখানো হয়েছে Android-এ synchronizedSet কীভাবে ব্যবহার করবেন।
স্টেপ ১: নতুন প্রজেক্ট তৈরি করুন
Android Studio-তে File → New Project-এ যান এবং প্রয়োজনীয় ডিটেইল পূরণ করে একটি নতুন প্রজেক্ট তৈরি করুন।
স্টেপ ২: res/layout/activity_main.xml-এ কোড যোগ করুন
<?xml version = "1.0" encoding = "utf-8"?>
<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"
tools:context = ".MainActivity"
android:orientation = "vertical">
<EditText
android:id = "@+id/name"
android:layout_width = "match_parent"
android:hint = "নাম লিখুন"
android:layout_height = "wrap_content" />
<LinearLayout
android:layout_width = "wrap_content"
android:layout_height = "wrap_content">
<Button
android:id = "@+id/save"
android:text = "সংরক্ষণ"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content" />
<Button
android:id = "@+id/refresh"
android:text = "রিফ্রেশ"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content" />
</LinearLayout>
<ListView
android:id = "@+id/listView"
android:layout_width = "match_parent"
android:layout_height = "wrap_content">
</ListView>
</LinearLayout>
উপরের কোডে নামের জন্য একটি EditText নেওয়া হয়েছে। Save বাটনে ক্লিক করলে ডেটা ArrayList-এ সংরক্ষিত হবে। Refresh বাটনে ক্লিক করলে ListView-এ পরিবর্তনগুলো দেখাবে।
স্টেপ ৩: src/MainActivity.java-এ কোড যোগ করুন
package com.example.andy.myapplication;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.Collections;
import java.util.NavigableSet;
import java.util.Set;
import java.util.TreeSet;
import java.util.Vector;
public class MainActivity extends AppCompatActivity {
EditText name;
ArrayAdapter arrayAdapter;
ArrayList<String> array_list;
Set set = new TreeSet();
private ListView listView;
@Override
protected void onCreate(Bundle readdInstanceState) {
super.onCreate(readdInstanceState);
setContentView(R.layout.activity_main);
array_list = new ArrayList<String>();
name = findViewById(R.id.name);
listView = findViewById(R.id.listView);
findViewById(R.id.refresh).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
arrayAdapter.notifyDataSetChanged();
listView.invalidateViews();
listView.refreshDrawableState();
}
});
findViewById(R.id.save).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!name.getText().toString().isEmpty()) {
set.add(name.getText().toString());
// synchronizedSet তৈরি করা হয়েছে
Set syncSet = Collections.synchronizedSet(set);
array_list.clear();
array_list.addAll(syncSet);
arrayAdapter = new ArrayAdapter(MainActivity.this, android.R.layout.simple_list_item_1, array_list);
listView.setAdapter(arrayAdapter);
Toast.makeText(MainActivity.this, "সংরক্ষিত হয়েছে", Toast.LENGTH_LONG).show();
} else {
name.setError("নাম লিখুন");
}
}
});
}
}
synchronizedSet ব্যাখ্যা
Collections.synchronizedSet(Set<E> s) মেথডটি একটি সেটের থ্রেড-সেফ (সিঙ্ক্রোনাইজড) র্যাপার রিটার্ন করে। এটি সাধারণ সেটকে মাল্টি-থ্রেডেড এনভায়রনমেন্টে নিরাপদে ব্যবহারযোগ্য করে তোলে। HashSet, TreeSet বা অন্য যেকোনো Set ইমপ্লিমেন্টেশন এর সাথে এটি ব্যবহার করা যায়। সিঙ্ক্রোনাইজড সেটের ওপর ইটারেশন করার সময় ম্যানুয়ালি সিঙ্ক্রোনাইজড ব্লক ব্যবহার করা উচিত।
অ্যাপ্লিকেশন চালান
Android Studio-তে Run আইকনে ক্লিক করে অ্যাপ চালান। ডিভাইস সিলেক্ট করুন।

উপরের ফলাফলে TreeSet-এর এলিমেন্টগুলো অ্যাডাপ্টারের মাধ্যমে ListView-এ দেখানো হয়েছে।