`
黑小子
  • 浏览: 45344 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java集合类之------Properties

阅读更多

       之前经常看到有人在网上问关于HashMapHashtable 的区别,自己也在看,时间一长发现自己也忘了二者的区别,于是在实际应用中犯错了。

       原因是使用了Properties 这个集合类时将null放到value上,于是抛出了NullPointerException ,于是想起了Hashtable ,这个集合的键值就是不允许为空的,经过测试果然如此,又看了下Properties 的源代码,原来它extends Hashtable ,这就难怪了。接着又看了put 方法如下:

	public synchronized V put(K key, V value) {
		// Make sure the value is not null
		if (value == null) {
			throw new NullPointerException();
		}

		// Makes sure the key is not already in the hashtable.
		Entry tab[] = table;
		int hash = key.hashCode();
		int index = (hash & 0x7FFFFFFF) % tab.length;
		for (Entry<K, V> e = tab[index]; e != null; e = e.next) {
			if ((e.hash == hash) && e.key.equals(key)) {
				V old = e.value;
				e.value = value;
				return old;
			}
		}

		modCount++;
		if (count >= threshold) {
			// Rehash the table if the threshold is exceeded
			rehash();

			tab = table;
			index = (hash & 0x7FFFFFFF) % tab.length;
		}

		// Creates the new entry.
		Entry<K, V> e = tab[index];
		tab[index] = new Entry<K, V>(hash, key, value, e);
		count++;
		return null;
	}

 这就不难看出,当value为null时直接就抛出NullPointerException ,若key为null时,null.hashCode()也会抛出NullPointerException 。所以决定了Properties 的键值不能为null 。同时注意这个类也是synchronized的,这样就可以保证在多线程共享时使用这个专用于存储属性文件的集合不会出现问题。

       经过这次的错误想起来老师以前经常告诉我们要坚持看java的API ,哪怕你每天看一个类的,有时间多看,没时间少看。终于明白了老师的心思,当然常用的很有必要看,磨刀不误砍柴工吗。掌握了基本的方法,写代码快了,也不容易出错了,更不用因为没有现成的方法而去baidu、google了,何了而不为呢!

分享到:
评论

相关推荐

    精通java集合框架--List,Set..

    ### 精通Java集合框架——List, Set, Map #### 概述 Java集合框架是一种高度抽象且灵活的数据组织工具,它通过一系列接口来定义不同类型的数据容器,并提供了丰富的操作这些容器的方法。本文将深入探讨Java集合...

    java集合-Properties的使用

    Properties是Java中用于管理配置文件的类,它继承自Hashtable类,可以存储键值对,并提供了读写配置文件的功能。

    java常用集合类总结

    Properties类是Java集合类中的一种特殊类,以键值对的形式存储数据,但只能存储字符串对。Properties类提供了两个方法:setProperties()和getProperties(),用于操作键值对。 在线程安全的集合类中,Vector、Stack...

    利用Java的Properties 类读取配置文件信息

    `Properties`类还提供了其他方法,如`propertyNames()`用于获取所有键的枚举,`list(PrintStream out)`用于打印所有键值对到控制台,以及`keys()`和`values()`方法分别获取所有键和值的集合。 8. **注意** - `....

    Java集合排序及java集合类详解.pdf

    在文档《Java集合排序及java集合类详解.pdf》中,虽然由于OCR扫描的原因,内容存在一些文字错误和漏识别,但可以推断该文档详细讲解了Java集合类的各个接口以及实现类的特点、用法以及它们之间的区别,并且详细介绍...

    Java集合框架常见面试题.pdf

    根据提供的文档内容,文件是关于Java集合框架的面试题知识点总结。以下是Java集合框架的知识点详述: Java集合框架主要包括Collection接口和Map...在面试中,理解并能够熟练运用这些集合类及其实现原理是非常重要的。

    Java集合框架使用总结

    Java集合框架的设计原则是将数据结构抽象成一组接口,再通过不同的实现类来具体实现这些接口。这使得Java开发者能够专注于自己的业务逻辑,而无需关心底层数据结构的实现细节。 #### 二、集合框架的层次结构 Java...

    用JAVA轻松操作properties文件

    `java.util.Properties`是Java集合框架的一部分,它继承自`Hashtable`类,并添加了一些特定于处理`properties`文件的方法。主要方法包括: - `load(InputStream inStream)`:从输入流中加载属性列表。 - `store...

    java-oceanbase-springboot.zip

    Java-OceanBase-SpringBoot.zip 文件是一个集合,它将Java编程、OceanBase数据库和SpringBoot框架结合在一起,为开发人员提供了一个高效、可扩展的分布式应用程序解决方案。这个压缩包可能是为了帮助开发者快速搭建...

    企业级java-II---综合测试.doc

    8. **资源文件**:与Register动作类相对应的动作级别资源文件一般命名为Register.properties,需保存在相同目录下。 9. **OGNL操作符号**: - `#`:访问上下文和Action上下文,用于集合操作和Map构造。 - `%`:在...

    Java集合面试题 52道.pdf

    Java集合是Java编程语言提供的一套用于数据存储和操作的接口与类的集合。根据Java集合框架,集合主要可以分为两大类:Collection集合与Map集合。Collection集合主要包括List、Set和Queue三大子接口,而Map则是独立于...

    简易java订销管理系统-javainfo

    6. **集合框架**:在处理数据时,Java集合框架如ArrayList、LinkedList、HashMap等将被广泛使用,用于存储和管理对象。 7. **异常处理**:Java的异常处理机制(try-catch-finally)在程序中必不可少,用于捕获和...

    Java基础篇:Java集合.pdf

    该文档主要详细总结了Java集合的相关知识,包括Collection和Map接口、Collection接口的子接口List和Set接口以及具体的实现类、存储原理等;Map接口的子接口HashMap、LinkedHashMap、TreeMap、Properties等

    基于Java的实例源码-常用工具包 Jodd.zip

    总结来说,这个压缩包是一个关于Jodd工具包的Java实例源代码集合,包括了项目构建的配置文件以及可能的模块划分。开发者可以通过学习和运行这些源代码来熟悉Jodd库的功能,并将其应用于自己的Java项目中,提高开发...

    Pro-Java-FX-2-A-Definitive-Guide-to-Rich-Clients-with-Java-Technology

    第三章《Properties and Bindings》探讨了JavaFX中的核心概念之一——属性和绑定机制。这使得开发者能够更轻松地管理和更新用户界面上的数据。 - **属性基础**:本节介绍了属性的概念及其在JavaFX中的实现方式,...

    OpenSwing---Java 常用控件集合

    5.配置成功标志: 随便打开一个JAVA文件,点下面的Design页,然后上面会出来一个设计工具条,诸如:Swing,Swing Containers…等,工具条的右上角有用来滚动工具栏的按钮,我们可以将其滚动到最末尾.如果看到有一个OpenSwing...

    java Properties文件key,value读取

    首先,我们需要引入`java.util.Properties`类,这是Java提供用来处理Properties文件的核心类。以下是一个简单的示例,展示如何加载和读取Properties文件: ```java import java.io.InputStream; import java.util....

    Properties类小结

    Properties类在Java编程中扮演着重要的角色,它是Java标准库中的一个核心类,主要用于处理配置文件或存储键值对的数据。这个类继承自Dictionary类,并提供了丰富的API来操作属性文件,使得读取、写入配置信息变得...

    java集合框架全面进阶.pdf

    在Java集合框架的发展史上,JDK 1.2版本中引入的集合框架极大地改进了集合类的设计和实现,这个版本的集合框架广泛应用于Java 2平台。随着Java 2平台的发展,集合框架经历了多次更新和扩展,以满足不断增长的编程...

    2019年秋季学期-Java应用与开发-复习提纲1

    23. **集合容器**:Java集合框架包括集合、列表和映射,如ArrayList、Vector、HashSet、HashMap等,理解它们的特性和用途非常重要。 24. **泛型**:泛型引入了类型参数,提高了代码的类型安全性和重用性。 25. **...

Global site tag (gtag.js) - Google Analytics