java.util প্যাকেজ Java-তে একটি গুরুত্বপূর্ণ প্যাকেজ যা বিভিন্ন ডেটা স্ট্রাকচার এবং ইউটিলিটি ক্লাস সরবরাহ করে। এটি Java-এর Collections Framework এর অন্তর্গত অনেক ক্লাস যেমন List, Set, Map, এবং Queue এর জন্য নির্দিষ্ট করা হয়েছে। এছাড়া, এটি বিভিন্ন utility classes যেমন Date, Calendar, Random, Scanner, ইত্যাদি প্রদান করে।
এখানে java.util প্যাকেজের কিছু প্রধান ক্লাস এবং তাদের কার্যাবলী সংক্ষিপ্তভাবে আলোচনা করা হলো:
1. ArrayList (List Interface Implementation)
ArrayList হল একটি List কনটেইনার যা ডাইনামিক অ্যারে হিসেবে কাজ করে। এটি একের পর এক এলিমেন্ট সংরক্ষণ করে এবং Indexed সিস্টেমে আইটেম অ্যাক্সেস করতে সক্ষম।
- Main Characteristics:
- অর্ডার সংরক্ষণ করে (insertion order)
- Duplicates অনুমোদিত
- Dynamic size (গোল্ডি আকার বাড়ানোর সুবিধা)
- Index-based access (অন্তর্বর্তী সংখ্যায় অ্যাক্সেস)
Usage Example:
import java.util.ArrayList;
public class ArrayListExample {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Orange");
System.out.println("ArrayList: " + list);
}
}
2. HashMap (Map Interface Implementation)
HashMap হল একটি Map কনটেইনার যা কী-ভ্যালু জোড়াগুলির মধ্যে ডেটা সংরক্ষণ করে। এটি hash table ভিত্তিক এবং দ্রুত আইটেম অ্যাক্সেসের জন্য ব্যবহৃত হয়।
- Main Characteristics:
- অর্ডার সংরক্ষণ করে না
- Unique keys (কী প্রাইমারি হতে হবে)
- দ্রুত lookup সময় (নতুন আইটেম যোগ করা বা অনুসন্ধান করা)
Usage Example:
import java.util.HashMap;
public class HashMapExample {
public static void main(String[] args) {
HashMap<Integer, String> map = new HashMap<>();
map.put(1, "Apple");
map.put(2, "Banana");
map.put(3, "Cherry");
System.out.println("HashMap: " + map);
}
}
3. HashSet (Set Interface Implementation)
HashSet হল একটি Set কনটেইনার যা Unordered collection হিসেবে কাজ করে এবং Unique values সংরক্ষণ করে। এটি কোনো নির্দিষ্ট অর্ডার সংরক্ষণ করে না এবং একই আইটেম একাধিকবার অ্যাড করা যাবে না।
- Main Characteristics:
- No duplicates allowed
- অর্ডার সংরক্ষণ করা হয় না
- দ্রুত lookup time
Usage Example:
import java.util.HashSet;
public class HashSetExample {
public static void main(String[] args) {
HashSet<String> set = new HashSet<>();
set.add("Apple");
set.add("Banana");
set.add("Apple"); // Duplicate value
System.out.println("HashSet: " + set); // Output: [Apple, Banana] (Duplicate removed)
}
}
4. LinkedList (List and Queue Interface Implementation)
LinkedList হল একটি List এবং Queue কনটেইনার। এটি একটি doubly-linked list ব্যবহার করে যা অ্যাড এবং রিমুভ অপারেশনগুলো দ্রুততর করে।
- Main Characteristics:
- অর্ডার সংরক্ষণ করে
- এলিমেন্ট ইনসার্ট এবং রিমুভ করার জন্য faster (ArrayList এর তুলনায়)
- Queue হিসেবে ব্যবহারের সুবিধা (FIFO)
Usage Example:
import java.util.LinkedList;
public class LinkedListExample {
public static void main(String[] args) {
LinkedList<String> list = new LinkedList<>();
list.add("Apple");
list.add("Banana");
list.addFirst("Orange"); // Add element at the beginning
System.out.println("LinkedList: " + list);
}
}
5. PriorityQueue (Queue Interface Implementation)
PriorityQueue হল একটি Queue কনটেইনার যা priority ordering অনুসারে আইটেমগুলোকে সাজিয়ে রাখে। এর মধ্যে সর্বোচ্চ priority (smallest/largest value) সরাসরি অ্যাক্সেস করা সম্ভব।
- Main Characteristics:
- FIFO ordering plus priority
- ডিফল্টভাবে min-heap এর মতো কাজ করে
- Duplicates allowed কিন্তু অর্ডার অনুসরণ করা হয়
Usage Example:
import java.util.PriorityQueue;
public class PriorityQueueExample {
public static void main(String[] args) {
PriorityQueue<Integer> queue = new PriorityQueue<>();
queue.add(10);
queue.add(5);
queue.add(20);
System.out.println("PriorityQueue: " + queue); // Output: [5, 10, 20]
}
}
6. Date and Calendar
java.util.Date এবং java.util.Calendar হল পুরনো টাইম ক্লাসগুলি, যেগুলি java.time প্যাকেজের সাথে পরিবর্তিত হয়েছে। তবে এগুলি এখনও অনেক পুরনো কোডবেসে ব্যবহৃত হয়।
Dateক্লাসটি current date and time প্রদান করতে ব্যবহৃত হয়, তবে এটি অত্যন্ত সীমাবদ্ধ।Calendarহল টাইম হিসাব এবং time manipulation এর জন্য ব্যবহৃত একটি শক্তিশালী ক্লাস।
Usage Example:
import java.util.Date;
public class DateExample {
public static void main(String[] args) {
Date date = new Date();
System.out.println("Current Date: " + date);
}
}
7. Random
Random ক্লাসটি ব্যবহার করে আপনি র্যান্ডম নাম্বার বা ভ্যালু জেনারেট করতে পারেন। এটি pseudo-random number generator হিসেবে কাজ করে।
- Main Characteristics:
nextInt(),nextDouble()মেথডের মাধ্যমে র্যান্ডম নাম্বার তৈরি করা যায়- বিভিন্ন ধরনের র্যান্ডম গাণিতিক অপারেশন করা সম্ভব
Usage Example:
import java.util.Random;
public class RandomExample {
public static void main(String[] args) {
Random rand = new Random();
int randomInt = rand.nextInt(100); // Random integer between 0 and 100
System.out.println("Random Integer: " + randomInt);
}
}
8. Scanner
Scanner ক্লাসটি ইনপুট গ্রহণের জন্য ব্যবহৃত হয়। এটি কনসোল থেকে ইউজারের ইনপুট গ্রহণ করার জন্য ব্যাপকভাবে ব্যবহৃত হয়।
- Main Characteristics:
- কনসোল ইনপুটের জন্য খুবই সুবিধাজনক
- বিভিন্ন ধরনের ডেটা (String, int, float) গ্রহণ করতে সক্ষম
Usage Example:
import java.util.Scanner;
public class ScannerExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Enter your name: ");
String name = scanner.nextLine();
System.out.println("Hello, " + name + "!");
}
}
9. Timer and TimerTask
Timer এবং TimerTask ক্লাসগুলি নির্দিষ্ট সময়ে একটি কাজ সিডিউল করার জন্য ব্যবহৃত হয়। এটি পুনরাবৃত্ত কাজ সিডিউল করতে ব্যবহার করা হয়।
Usage Example:
import java.util.Timer;
import java.util.TimerTask;
public class TimerExample {
public static void main(String[] args) {
Timer timer = new Timer();
TimerTask task = new TimerTask() {
public void run() {
System.out.println("Task executed!");
}
};
// Schedules the task to run after 5 seconds
timer.schedule(task, 5000);
}
}
java.utilপ্যাকেজটি Collections Framework এবং utility classes সরবরাহ করে যা বিভিন্ন ডেটা স্ট্রাকচার, ইনপুট/আউটপুট, টাইম এবং গাণিতিক গণনা পরিচালনা করতে ব্যবহৃত হয়।ArrayList,HashMap,HashSet,LinkedList,PriorityQueue,Random,Scannerসহ অনেক ক্লাস রয়েছে যেগুলি ব্যবহারের মাধ্যমে আমরা নানা ধরনের ডেটা সংগ্রহ, প্রক্রিয়া এবং পরিসংখ্যানগত বিশ্লেষণ করতে পারি।- এই ক্লাসগুলির মধ্যে Collections Framework এর সাহায্যে দ্রুত কাজ করার জন্য,
BigDecimal,BigIntegerএবংCalendarএর মতো ক্লাসের সঙ্গে ইন্টিগ্রেট করা যায় যাতে বড় সংখ্যার গণনা এবং টাইম স্ট্যাম্পিং আরও সঠিকভাবে কাজ করে।
Read more