- Data Structure
- Networking
- RDBMS
- Operating System
- Java
- MS Excel
- iOS
- HTML
- CSS
- Android
- Python
- C Programming
- C++
- C#
- MongoDB
- MySQL
- Javascript
- PHP
- Physics
- Chemistry
- Biology
- Mathematics
- English
- Economics
- Psychology
- Social Studies
- Fashion Studies
- Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Difference between HashMap and ConcurrentHashMap in Java
Following are the notable differences between HashMap and ConcurrentHashMap classes in Java.
HashMap | ConcurrentHashMap | |
---|---|---|
Synchronized | HashMap is not synchronized. | ConcurrentHashMap is synchronized. |
Thread Safe | HashMap is not thread safe. | ConcurrentHashMap is thread safe. |
Iterator type | HashMap iterator is fail-fast and ArrayList throws ConcurrentModificationException if concurrent modification happens during iteration. | ConcurrentHashMap is fail-safe and it will never throw ConcurrentModificationException during iteration. |
Null values | HashMap allows key and value to be null. | ConcurrentHashMap does not allow null key/value. It will throw NullPointerException. |
Performance | HashMap is faster. | ConcurrentHashMap is slower than HashMap. |
Since Java Version | 1.2 | 1.5 |
Example
import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; public class Tester { public static void main(String[] args) { List<String> arrayList = new ArrayList<>(); arrayList.add("A"); arrayList.add("B"); arrayList.add("C"); Iterator<String> iterator = arrayList.iterator(); System.out.println(arrayList); while (iterator.hasNext()) { if (iterator.next().equals("C")) { //removal is allowed. iterator.remove(); } } System.out.println(arrayList); List<String> copyOnWriteArrayList = new CopyOnWriteArrayList<>(); copyOnWriteArrayList.add("A"); copyOnWriteArrayList.add("B"); copyOnWriteArrayList.add("C"); Iterator<String> iterator1 = copyOnWriteArrayList.iterator(); System.out.println(copyOnWriteArrayList); while (iterator1.hasNext()) { if (iterator1.next().equals("C")) { try{ iterator1.remove(); }catch(UnsupportedOperationException e){ System.out.println("Removal not allowed."); } } } System.out.println(copyOnWriteArrayList); } }
Output
[A, B, C] [A, B] [A, B, C] Removal not allowed. [A, B, C]
Advertisements