Java-তে StringBuilder এবং StringBuffer হলো স্ট্রিং ম্যানিপুলেশনের দুটি বিশেষ ক্লাস, যা mutable (পরিবর্তনযোগ্য) স্ট্রিং তৈরিতে ব্যবহৃত হয়। সাধারণত String অবজেক্ট immutable (অপরিবর্তনীয়) হওয়ায় স্ট্রিং পরিবর্তন করার জন্য প্রতিবার নতুন অবজেক্ট তৈরি হয়। StringBuilder এবং StringBuffer সেই সমস্যা সমাধান করে।
StringBuilder এবং StringBuffer এর মূল বৈশিষ্ট্য
| বৈশিষ্ট্য | StringBuilder | StringBuffer |
|---|---|---|
| পরিবর্তনযোগ্যতা | পরিবর্তনযোগ্য | পরিবর্তনযোগ্য |
| থ্রেড নিরাপত্তা | থ্রেড নিরাপদ নয় | থ্রেড নিরাপদ |
| দ্রুততা | তুলনামূলকভাবে দ্রুত | তুলনামূলকভাবে ধীর |
| ব্যবহার | একক-থ্রেড পরিবেশে | মাল্টি-থ্রেড পরিবেশে |
StringBuilder
StringBuilder হলো একটি mutable স্ট্রিং ক্লাস, যা একক-থ্রেড পরিবেশে দ্রুত এবং কার্যকরী। এটি synchronized নয়, অর্থাৎ এটি থ্রেড নিরাপদ নয়, তবে এটি একই থ্রেডে কাজ করতে দ্রুত এবং কার্যকর।
StringBuilder ব্যবহার উদাহরণ
public class StringBuilderExample {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("Hello");
// Append মেথড ব্যবহার করে নতুন টেক্সট যুক্ত করা
sb.append(" World");
System.out.println("After Append: " + sb); // Output: Hello World
// Insert মেথড ব্যবহার করে নির্দিষ্ট স্থানে টেক্সট যুক্ত করা
sb.insert(5, " Java");
System.out.println("After Insert: " + sb); // Output: Hello Java World
// Replace মেথড ব্যবহার করে নির্দিষ্ট অংশ পরিবর্তন করা
sb.replace(6, 10, "Python");
System.out.println("After Replace: " + sb); // Output: Hello Python World
// Delete মেথড ব্যবহার করে নির্দিষ্ট অংশ মুছে ফেলা
sb.delete(5, 12);
System.out.println("After Delete: " + sb); // Output: Hello World
// Reverse মেথড ব্যবহার করে স্ট্রিং উল্টানো
sb.reverse();
System.out.println("After Reverse: " + sb); // Output: dlroW olleH
}
}
StringBuffer
StringBuffer একটি mutable স্ট্রিং ক্লাস যা মাল্টি-থ্রেড পরিবেশে ব্যবহারের জন্য উপযোগী। এটি synchronized হওয়ায় থ্রেড নিরাপদ এবং একাধিক থ্রেড একই StringBuffer অবজেক্টে কাজ করলেও ডেটা সুরক্ষিত থাকে।
StringBuffer ব্যবহার উদাহরণ
public class StringBufferExample {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer("Hello");
// Append মেথড ব্যবহার করে নতুন টেক্সট যুক্ত করা
sb.append(" World");
System.out.println("After Append: " + sb); // Output: Hello World
// Insert মেথড ব্যবহার করে নির্দিষ্ট স্থানে টেক্সট যুক্ত করা
sb.insert(5, " Java");
System.out.println("After Insert: " + sb); // Output: Hello Java World
// Replace মেথড ব্যবহার করে নির্দিষ্ট অংশ পরিবর্তন করা
sb.replace(6, 10, "Python");
System.out.println("After Replace: " + sb); // Output: Hello Python World
// Delete মেথড ব্যবহার করে নির্দিষ্ট অংশ মুছে ফেলা
sb.delete(5, 12);
System.out.println("After Delete: " + sb); // Output: Hello World
// Reverse মেথড ব্যবহার করে স্ট্রিং উল্টানো
sb.reverse();
System.out.println("After Reverse: " + sb); // Output: dlroW olleH
}
}
StringBuilder এবং StringBuffer এর মেথডসমূহ
StringBuilder এবং StringBuffer একই ধরনের মেথড প্রদান করে, যার মাধ্যমে স্ট্রিং-এর উপর বিভিন্ন ধরনের অপারেশন করা যায়:
- append() - স্ট্রিং এর শেষে টেক্সট যুক্ত করা।
- insert() - নির্দিষ্ট ইনডেক্সে টেক্সট যুক্ত করা।
- replace() - নির্দিষ্ট অংশ পরিবর্তন করা।
- delete() - নির্দিষ্ট অংশ মুছে ফেলা।
- reverse() - স্ট্রিং-এর অক্ষরগুলো উল্টানো।
পার্থক্য: String, StringBuilder, এবং StringBuffer
| বৈশিষ্ট্য | String | StringBuilder | StringBuffer |
|---|---|---|---|
| পরিবর্তনযোগ্যতা | অপরিবর্তনীয় | পরিবর্তনযোগ্য | পরিবর্তনযোগ্য |
| থ্রেড নিরাপত্তা | থ্রেড নিরাপদ | থ্রেড নিরাপদ নয় | থ্রেড নিরাপদ |
| দ্রুততা | ধীর | তুলনামূলকভাবে দ্রুত | তুলনামূলকভাবে ধীর |
| ব্যবহার | অপরিবর্তনীয় ডেটা | একক থ্রেডেড পরিবেশে | মাল্টি-থ্রেডেড পরিবেশে |
কোনটি কখন ব্যবহার করবেন?
- String: যখন স্ট্রিং অপরিবর্তনীয় হবে এবং একবার সেট করা মান পরিবর্তন হবে না।
- StringBuilder: একক-থ্রেডেড পরিবেশে দ্রুত স্ট্রিং ম্যানিপুলেশনের প্রয়োজন হলে।
- StringBuffer: মাল্টি-থ্রেডেড পরিবেশে স্ট্রিং ম্যানিপুলেশনের প্রয়োজন হলে, যেখানে থ্রেড নিরাপত্তা গুরুত্বপূর্ণ।
সারসংক্ষেপ
Java-তে StringBuilder এবং StringBuffer ব্যবহার করে mutable স্ট্রিং ম্যানিপুলেশন করা যায়। StringBuilder একক-থ্রেডেড পরিবেশে দ্রুত এবং কার্যকরী, যেখানে StringBuffer মাল্টি-থ্রেডেড পরিবেশে থ্রেড নিরাপত্তার জন্য ব্যবহৃত হয়। বিভিন্ন মেথড ব্যবহার করে স্ট্রিং-এ টেক্সট যোগ, পরিবর্তন, মুছে ফেলা, এবং উল্টানো যায়, যা প্রোগ্রামের কার্যক্ষমতা এবং মেমোরি ব্যবস্থাপনা উন্নত করে।
Read more