در این مقاله فرض میکنیم که شما اطلاعات حدودی از Java Collections دارید.
این سلسله مقالات که برای تکمیل مقاله Java Collections - Everything You MUST Know نوشته شده برای بهبود و درک بهتر collectionها و مواردی که به طور روزمره دارید استفاده میکنید نوشته شده لطفا تمام این دسته بندی رو برای درک بهتر مطالعه کنید .
StringBuilder vs StringBuffer vs String
در جاوا، HashMap، TreeMap و Set همه برای ذخیره مجموعهای از دادهها استفاده میشوند، اما هر کدام ویژگیها و کاربردهای خاص خود را دارند. برای درک بهتر این تفاوتها، بیایید هر یک را به طور جداگانه بررسی کنیم:
سرعت: عملیات جستجو، درج و حذف در HashMap به طور متوسط زمان ثابت (O(1)) دارند که آن را
بسیار سریع میکند.
ترتیب: عناصر در HashMap به صورت نامنظم ذخیره میشوند.
کلیدها: کلیدها باید منحصر به فرد باشند و میتوانند null باشند.
مقدارها: مقدارها میتوانند تکراری باشند و میتوانند null باشند.
سرعت: عملیات جستجو، درج و حذف در TreeMap زمان لگاریتمی (O(log n)) دارند.
ترتیب: عناصر در TreeMap بر اساس کلیدهای طبیعی یا یک مقایسهکننده سفارشی مرتب میشوند.
کلیدها: کلیدها باید منحصر به فرد باشند و قابل مقایسه باشند.
مقدارها: مقدارها میتوانند تکراری باشند و میتوانند null باشند.
عناصر منحصر به فرد: هر عنصر فقط یک بار میتواند در یک Set وجود داشته باشد.
ترتیب: ترتیب عناصر در Set مشخص نیست (مگر اینکه از یک پیادهسازی خاص مانند TreeSet استفاده
شود).
HashSet:
بر اساس HashMap ساخته شده و سریعترین پیادهسازی Set است.
TreeSet:
بر اساس TreeMap ساخته شده و عناصر را به صورت مرتب شده ذخیره میکند.
جدول مقایسه :
مثال خیلی ساده :
// HashMap Map<String, Integer> map = new HashMap<>(); map.put("apple", 1); map.put("banana", 2); // TreeMap Map<String, Integer> treeMap = new TreeMap<>(); treeMap.put("apple", 1); treeMap.put("banana", 2); // HashSet Set<String> set = new HashSet<>(); set.add("apple"); set.add("banana");
در نهایت، انتخاب بین HashMap، TreeMap و Set به نیازهای خاص برنامه شما بستگی دارد.
منتظر نگاه های زیباتون هستم .
موفق و پیروز باشید.