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