HashMap 和 Hashtable 有什麼差別
來源:Medium 今天,您將了解最受歡迎的 Java 面試問題之一的答案:HashMap 和 Hashtable 之間有什麼區別。 哈希表是一種基於哈希和 Map 介面的實作來儲存金鑰對及其值的資料結構。HashMap 也是用於儲存鍵和值的資料結構,基於哈希和 Map 介面的實作。HashMap 可讓您快速透過鍵取得值。例如,用戶的姓名和電話號碼。Java 中的 HashMap 和 Hashtable 之間存在顯著差異。其中包括線程安全、同步和 Map 實現一致性。在選擇要在 Java 程式中使用的資料結構類型時,考慮以下幾個方面非常重要: HashMap 是非同步、無序的鍵值對映射。它允許空值並使用雜湊碼作為相等性檢查,而Hashtable是鍵值對的同步有序映射。它不允許空值並使用equals()方法檢查相等性。HashMap 的預設容量為 16,Hashtable 的預設初始容量為 11。HashMap 物件的值是使用迭代器進行迭代的,而 Hashtable 是除向量之外唯一使用枚舉器來迭代的類別。迭代 Hashtable 物件的值。請記住,HashMap 和 Hashtable 之間的差異是 Java 面試中最常見的問題之一。如何在 Java 中尋找並修復 NullPointerException
來源: Theflashreads 讀完本文後,您將能夠更好地查找並修復 Java 程式碼中的常見錯誤 - NullPointerException。什麼是空指標異常?
java.lang.NullPointerException是Java中的執行時期異常。當嘗試存取未指向或引用任何物件(即為 null)的變數時,就會發生這種情況。由於NullPointerException是運行時異常,因此不需要在應用程式程式碼中明確捕獲和處理它。什麼情況下會發生NullPointerException?
當嘗試存取未初始化的物件時,會發生NullPointerException 。正如已經提到的,當物件引用無處可去並且具有空值時,就會發生這種情況。以下是一些最常見的NullPointerException異常場景:- 存取空物件的屬性。
- 從引發異常的方法引發 null。
- 依賴注入框架的配置不正確,例如:(Spring)。
- 將空參數傳遞給方法。
- 在空物件上呼叫方法。
- 在空物件上使用同步。
- 存取空物件的索引元素(例如,在陣列中)。
範例 NullPointerException
在此範例中,我們嘗試呼叫printLength方法,該方法將字串作為參數並列印其長度。如果作為參數傳遞的字串值為 null,則會拋出java.lang.NullPointerException。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)
如何避免拋出 NullPointerException
可以透過使用以下檢查和預防方法來避免NullPointerException :-
在存取物件的方法或屬性之前新增空檢查,確保物件已正確初始化。
-
使用 Apache Commons StringUtils 進行字串操作:例如,在進一步使用字串之前,使用StringUtils.isNotEmpty()檢查字串是否為空。
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); } }
-
盡可能使用基元而不是對象,因為它們不能有空引用。例如,使用int代替Integer,使用boolean代替Boolean。
-
請務必仔細檢查您的程式碼。這將減少拋出NullPointerException的可能性。
GO TO FULL VERSION