Android-এ Stack সর্ট করা: Collections.sort() ব্যবহার করে
এই টিউটোরিয়ালে আমরা দেখব কিভাবে Java-র Stack ক্লাসের এলিমেন্টগুলো সর্ট করা যায়। যেহেতু Stack সরাসরি সর্ট সাপোর্ট করে না, তাই এটিকে List-এ কনভার্ট করে Collections.sort() ব্যবহার করা হয়।
প্রয়োজনীয় ধাপসমূহ
ধাপ ১: নতুন প্রজেক্ট তৈরি করুন
Android Studio → File → New Project → প্রয়োজনীয় ডিটেইলস পূরণ করুন।
ধাপ ২: লেআউট ফাইল (activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:app="https://schemas.android.com/apk/res-auto"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
tools:context=".MainActivity">
<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textSize="30sp"
android:gravity="center" />
</LinearLayout>
ধাপ ৩: MainActivity.java (উন্নত সংস্করণ)
package com.example.myapplication;
import android.os.Build;
import android.os.Bundle;
import android.widget.TextView;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
import java.util.Collections;
import java.util.Stack;
public class MainActivity extends AppCompatActivity {
@RequiresApi(api = Build.VERSION_CODES.P)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Stack<Integer> stack = new Stack<>();
stack.add(1);
stack.add(10);
stack.add(9);
stack.add(4);
stack.add(3);
stack.add(2);
// Stack-এর underglying list-এ অ্যাক্সেস পেয়ে সর্ট করুন
// Stack Vector-এ বেসড, তাই এটিকে List হিসেবে ট্রিট করা যায়
Collections.sort(stack);
TextView textView = findViewById(R.id.text);
textView.setText("সর্টেড Stack: " + stack.toString());
}
}
মূল কোডের সমস্যা: মূল উদাহরণে HashSet ব্যবহার করা হয়েছিল যা ডুপ্লিকেট সরিয়ে ফেলে এবং অর্ডার রক্ষা করে না। এখানে Collections.sort(stack) ব্যবহার করে আসল সর্টিং করা হয়েছে।
ফলাফল
ইনপুট Stack (টপ থেকে বটম): [1, 10, 9, 4, 3, 2]
সর্টেড আউটপুট: [1, 2, 3, 4, 9, 10] (অসেন্ডিং অর্ডার)

গভীর ব্যাখ্যা
Stack<E>হলোVector<E>-এक्सটেন্ডেড ক্লাস, যাList<E>ইমপ্লিমেন্ট করে।Collections.sort(List)ন্যাচারেল অর্ডারিং (Comparable) অনুযায়ী সর্ট করে।- সর্টিং ইন-প্লেস (In-place) হয়, মানে মূল Stack-ই সর্ট হয়ে যায়।
ডিসেন্ডিং অর্ডারলে সর্ট করতে চাইলে
Collections.sort(stack, Collections.reverseOrder());
সারসংক্ষেপ
Stack সর্ট করার সবচে্য সহজ উপায় হলো Collections.sort(stack) কল করা, কারণ Stack ইনহেরিট করে Vector যা List ইমপ্লিমেন্ট করে। এটি O(n log n) টাইম কমপ্লেক্সিটিতে কাজ করে।