Junior
153
HashMap пен Hashtable арасындағы айырмашылық неде?
AI-дан жауап
sobes.tech AI
Java-да HashMap пен Hashtable арасындағы негізгі айырмашылықтар:
| Ерекшелік | HashMap | Hashtable |
|---|---|---|
| Синхрондау | Синхрондалмаған | Синхрондалған |
| Поток қауіпсіздігі | Жоқ | Бар |
| Null кілттері/мәндері | Бір null кілтке және бірнеше null мәндеріне рұқсат етілген |
null кілттері мен null мәндеріне тыйым салынған |
| Өнімділік | Жоғары (блоктау талап етілмейді) | Төмен (синхрондау себебінен) |
| Тұқымқуалаушылық | Collection Framework (Java 1.2-ден бастап) | Ерте класс (Java 1.0-ден бастап), Dictionary-ді кеңейтеді |
| Итераторлар | Fail-fast итераторлар (Iterator, ListIterator) |
Fail-safe итератор (Enumeration), сондай-ақ Fail-fast итераторлар (Iterator) |
// Null-мен HashMap қолдану мысалы
Map<String, String> hashMap = new HashMap<>();
hashMap.put(null, "null кілт үшін мән");
hashMap.put("null мәні бар кілт", null);
System.out.println(hashMap); // Шығу: {null=null кілт үшін мән, null мәні бар кілт=null}
// Hashtable қолдану мысалы (null қосу қателік тудырады)
Map<String, String> hashtable = new Hashtable<>();
// hashtable.put(null, "null кілт үшін мән"); // NullPointerException тудырады
// hashtable.put("null мәні бар кілт", null); // NullPointerException тудырады
HashMap көбінесе поток қауіпсіздігі қажет емес кезде, жақсы өнімділігі үшін артықшылықты пайдаланады. Hashtable сирек қолданылады және негізінен ескі кодпен үйлесімділік үшін немесе синхрондау қажет болған жағдайда пайдаланылады. Көп ағынды ортада поток қауіпсіз хеш-карта үшін әдетте ConcurrentHashMap пайдаланылады.