Computer >> Máy Tính >  >> Lập trình >> Java

Sự khác biệt giữa HashTable và ConcurrentHashMap trong Java

Concurrent Hashmap là một lớp đã được giới thiệu trong jdk1.5. Bản đồ băm đồng thời chỉ áp dụng khóa ở cấp nhóm được gọi là phân mảnh trong khi thêm hoặc cập nhật bản đồ. Vì vậy, một bản đồ băm đồng thời cho phép các thao tác đọc và ghi đồng thời vào bản đồ.

HashTable là một lớp kế thừa an toàn luồng được giới thiệu trong Jdk1.1. Nó là một triển khai cơ sở của giao diện Bản đồ. Nó không cho phép các khóa và giá trị rỗng. Bản chất nó được đồng bộ hóa nên hai luồng khác nhau không thể truy cập đồng thời. Hashtable không duy trì bất kỳ thứ tự nào.

Phím
Sr. Không.

HashTable
ConcurrentHashMap

1

Cơ bản

HashTable là lớp kế thừa an toàn luồng được giới thiệu trong Jdk1.1

ConcurrentHashmap là một lớp đã được giới thiệu trong jdk1.5

2

Khóa

Nó áp dụng khóa trên toàn bộ bộ sưu tập

ConcurrentHashMap chỉ áp dụng các khóa ở cấp nhóm được gọi là phân mảnh trong khi thêm hoặc cập nhật bản đồ

3

Hiệu suất

Nó chậm hơn ConcurrentHashMap

Nó tốt hơn HashTable

4.

Không có

Nó không cho phép khóa và giá trị rỗng

Nó cho phép khóa và giá trị rỗng

Ví dụ về Hashtable

import java.util.ArrayList;
import java.util.EnumMap;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
public class HashtableExample {
   public static void main(String[] args) {
      // create Hashtable
      Hashtable map = new Hashtable();
      map.put("HCL", "100");
      map.put("DELL", "200");
      map.put("IBM", "300");
      // print the map
      for (Map.Entry m : map.entrySet()) {
         System.out.println(m.getKey() + " " + m.getValue());
      }
   }
}

Ví dụ về ConcurrentHashMap

import java.util.ArrayList;
import java.util.EnumMap;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
public class ConcurrentHashMapExample {
   public static void main(String[] args) {
      // ConcurrentHashMap
      Map myMap = new ConcurrentHashMap();
      myMap.put("HCL", "1");
      myMap.put("DELL", "1");
      // print the map
      for (Map.Entry m : map.entrySet()) {
         System.out.println(m.getKey() + " " + m.getValue());
      }
   }
}