博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java学习(14)集合(3)
阅读量:4074 次
发布时间:2019-05-25

本文共 1643 字,大约阅读时间需要 5 分钟。

/**
 * 笔记:
 * 一、HashMap 与 Hashtable 的区别
 *    1.相同点:HashMap 和 Hashtable 都是 Java 的集合类,都可以用来存放Java对象。
 *    2.区别:
 *      (1)历史原因
 *          Hashtable 是基于陈旧的 Dictionary 类的,HashMap 是Java1.2引进的Map接口的一个实现。
 *      (2)同步性
 *          Hashtable 是同步的,这个类中的一些方法保证了HashTable中的对象是线程安全的。
 *          而HashMap是异步的,因此HashMap的对象不是线程安全的,因为同步的要求会影响执行的效率。
 *          所以如果不需要线程安全的集合使用HashMap,可以避免由于同步带来的不必要的性能开销,从而提高效率。
 *      (3)值
 *          HashMap可以让你将空值作为一个表的条目的key或value。
 *          Hashtable不能放入空值。
 *
 * 二、ArrayList 与 Vector 的区别
 *    1.相同点:ArrayList 和 Vector 都是Java的集合类。都可以用来存放Java对象。
 *    2.区别:
 *      (1)同步性
 *          Vector是同步的,该类中的一些方法保证了Vector中的对象是线程安全的。
 *          而ArrayList是异步的,因此ArrayList的对象不是线程安全的,因为同步的要求会影响执行的效率。
 *          所以如果不需要线程安全的集合使用ArrayList,可以避免由于同步带来的不必要的性能开销,从而提高效率。
 *         (2)数据增长
 *          从内部实现机制来讲,ArrayList 和 Vector 都是使用数组(Array)来控制集合中的对象,
 *          当你向这两种类型中增加元素的时候,如果元素的数目超出了内部数组目前的长度,他们都需要扩展内部数组的长度。
 *          (重点)Vector缺省情况下自动增长原来一倍的数组长度,ArrayList是原来的50%。****
 *          所以你最后获得的这个集合所占的空间总是比你实际需要的大。如果要在集合中保存大量数据,采用Vector。
 *          可以通过设置集合的初始化大小来避免不必要的资源开销。
 * 三、应用
 *    1.如果要求线程安全:使用Vector 和 Hashtable;
 *    2.如果不要求线程安全:使用 ArrayList、LinkedList、HashMap;
 *    3.如果要求键值:使用 HashMap、Hashtable;
 *    4.如果数据量大,考虑安全线程:使用Vector;
 */
package com.shuiyixin1;import com.sun.org.apache.xalan.internal.xsltc.runtime.Hashtable;import java.util.*;public class learnJ_005jihe3 {	/**	 * @作者:shuiyixin
*/
public static void main(String[] args) {// TODO Auto-generated method stub//测试之Hashtable能否放入空值 Hashtable ht = new Hashtable();// ht.put(null, null);//语句错误,不能是空值// System.out.println("测试之Hashtable能否放入空值:" + ht.get(null));测试之Hashtable能否放入空值//注:刚开始报错:HashMap cannot be resolved to a type 是因为没有导入java.util.*包// HashMap hm = new HashMap();// hm.put(null, null);// System.out.println("测试之HashMap能否放入空值:" + hm.get(null));}}

转载地址:http://dyyni.baihongyu.com/

你可能感兴趣的文章
java LinkedList与ArrayList迭代器遍历和for遍历对比
查看>>
drat中构造方法
查看>>
JavaScript的一些基础-数据类型
查看>>
coursesa课程 Python 3 programming 统计文件有多少单词
查看>>
coursesa课程 Python 3 programming course_2_assessment_7 多参数函数练习题
查看>>
coursesa课程 Python 3 programming course_2_assessment_8 sorted练习题
查看>>
多线程使用随机函数需要注意的一点
查看>>
getpeername,getsockname
查看>>
所谓的进步和提升,就是完成认知升级
查看>>
如何用好碎片化时间,让思维更有效率?
查看>>
No.182 - LeetCode1325 - C指针的魅力
查看>>
Encoding Schemes
查看>>
带WiringPi库的交叉笔译如何处理二之软链接概念
查看>>
Java8 HashMap集合解析
查看>>
自定义 select 下拉框 多选插件
查看>>
linux和windows内存布局验证
查看>>
Linux常用统计命令之wc
查看>>
fastcgi_param 详解
查看>>
搞定Java面试中的数据结构问题
查看>>
React Native(一):搭建开发环境、出Hello World
查看>>