JavaRush /Blog Java /Random-VI /Nghỉ giải lao #173. Sự khác biệt giữa HashMap và Hashtabl...

Nghỉ giải lao #173. Sự khác biệt giữa HashMap và Hashtable là gì? Cách tìm và sửa lỗi NullPointerException trong Java

Xuất bản trong nhóm

Sự khác biệt giữa HashMap và Hashtable là gì

Nguồn: Medium Hôm nay bạn sẽ tìm hiểu câu trả lời cho một trong những câu hỏi phỏng vấn Java phổ biến nhất: sự khác biệt giữa HashMap và Hashtable là gì. Nghỉ giải lao #173.  Sự khác biệt giữa HashMap và Hashtable là gì?  Cách tìm và sửa lỗi NullPointerException trong Java - 1Hashtable là cấu trúc dữ liệu để lưu trữ các cặp khóa và giá trị của chúng, dựa trên hàm băm và triển khai giao diện Bản đồ. HashMap cũng là cấu trúc dữ liệu để lưu trữ khóa và giá trị, dựa trên hàm băm và triển khai giao diện Map. HashMap cho phép bạn nhanh chóng nhận được giá trị theo khóa. Ví dụ: tên và số điện thoại của người dùng. Có sự khác biệt đáng kể giữa HashMap và Hashtable trong Java . Chúng bao gồm an toàn luồng, đồng bộ hóa và tính nhất quán khi triển khai Bản đồ. Điều quan trọng là phải xem xét các khía cạnh này khi chọn loại cấu trúc dữ liệu để sử dụng trong chương trình Java của bạn: HashMap là một bản đồ không được đồng bộ hóa , không có thứ tự của các cặp khóa-giá trị. cho phép các giá trị null và sử dụng mã băm làm kiểm tra tính bằng nhau, trong khi Hashtable là bản đồ có thứ tự được đồng bộ hóa của các cặp khóa-giá trị. Nó không cho phép giá trị null và sử dụng phương thức Equals() để kiểm tra sự bằng nhau. HashMap có dung lượng mặc định là 16 và Hashtable có dung lượng ban đầu mặc định là 11. Các giá trị của đối tượng HashMap được lặp lại bằng cách sử dụng trình vòng lặp và Hashtable là lớp duy nhất không phải vectơ sử dụng bộ liệt kê để lặp lại các giá trị của một đối tượng Hashtable. Hãy nhớ rằng sự khác biệt giữa HashMap và Hashtable là một trong những câu hỏi phổ biến nhất trong các cuộc phỏng vấn Java.

Cách tìm và sửa lỗi NullPointerException trong Java

Nguồn: Theflashreads Sau khi đọc bài viết này, bạn sẽ có thể tìm và sửa một lỗi phổ biến trong mã Java - NullPointerException tốt hơn. Nghỉ giải lao #173.  Sự khác biệt giữa HashMap và Hashtable là gì?  Cách tìm và sửa lỗi NullPointerException trong Java - 2

Ngoại lệ NullPointerException là gì?

java.lang.NullPointerException là một ngoại lệ thời gian chạy trong Java. Nó xảy ra khi một nỗ lực được thực hiện để truy cập một biến không trỏ đến hoặc tham chiếu đến bất kỳ đối tượng nào, nghĩa là nó là null. Bởi vì NullPointerException là một ngoại lệ trong thời gian chạy nên nó không cần phải được phát hiện và xử lý một cách rõ ràng trong mã ứng dụng.

Trong trường hợp nào xảy ra NullPointerException?

NullPointerException xảy ra khi cố gắng truy cập vào một đối tượng chưa được khởi tạo. Như đã đề cập, điều này xảy ra khi tham chiếu đối tượng không đi đến đâu và có giá trị null. Dưới đây là một số trường hợp ngoại lệ NullPointerException phổ biến nhất :
  • Truy cập các thuộc tính của một đối tượng null.
  • Ném null từ một phương thức ném ngoại lệ.
  • Cấu hình không chính xác cho các khung chèn phụ thuộc, ví dụ: (Mùa xuân).
  • Truyền tham số null cho một phương thức.
  • Gọi các phương thức trên một đối tượng null.
  • Sử dụng đồng bộ hóa trên một đối tượng null.
  • Truy cập phần tử chỉ mục (ví dụ: trong một mảng) của đối tượng null.

Ví dụ NullPointerException

Trong ví dụ này, chúng ta đang cố gắng gọi phương thức printLength , phương thức này lấy một chuỗi làm tham số và in ra độ dài của nó. Nếu giá trị của chuỗi được truyền dưới dạng tham số là null thì ngoại lệ java.lang.NullPointerException sẽ được ném ra .
public class NullPointerExceptionExample {

    private static void printLength(String str) {

        System.out.println(str.length());

    }



    public static void main(String args[]) {

        String nullString = null;

        printLength(nullString);

    }

}





Exception in thread "main" java.lang.NullPointerException

    at NullPointerExceptionExample.printLength(NullPointerExceptionExample.java:3)

    at NullPointerExceptionExample.main(NullPointerExceptionExample.java:8)

Cách tránh ném NullPointerException

Có thể tránh NullPointerException bằng cách sử dụng các phương pháp kiểm tra và phòng ngừa sau:
  • Đảm bảo rằng một đối tượng được khởi tạo đúng cách bằng cách thêm kiểm tra null trước khi truy cập các phương thức hoặc thuộc tính của nó.

  • Sử dụng Apache Commons StringUtils cho các thao tác chuỗi: ví dụ: StringUtils.isNotEmpty() để kiểm tra xem một chuỗi có trống hay không trước khi sử dụng tiếp.

    import org.apache.commons.lang3.StringUtils;
    
    
    
    public class NullPointerExceptionExample {
    
        private static void printLength(String str) {
    
            if (StringUtils.isNotEmpty(str)) {
    
                System.out.println(str.length());
    
            } else {
    
                System.out.println("This time there is no NullPointerException");
    
            }
    
        }
    
    
    
        public static void main(String args[]) {
    
            String nullString = null;
    
            printLength(nullString);
    
        }
    
    }
  • Sử dụng các kiểu nguyên thủy thay vì các đối tượng bất cứ khi nào có thể, vì chúng không thể có tham chiếu rỗng. Ví dụ: sử dụng int thay vì Integerboolean thay vì Boolean .

  • Hãy chắc chắn rằng bạn kiểm tra lại mã của bạn. Điều này sẽ làm giảm khả năng ném ra ngoại lệ NullPointerException .

Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION