java集合类的学习(二)
- ArrayList,LinkedList,Vector都是List的实现类,前两都没有实现同步机制,Vector实现了同步机制。他们代码类似。
- ArrayList代表大小可变的数组,允许对元素进行快速随机访问,但向List中间进行添加移除元素操作时效率很差,LinkedList采用了链表数据结构,对顺序访问进行了优化,提高了向List中间位置进行操作的效率。
- Vector的作用跟ArrayList差不多,只是区别于一个实现了同步机制,一个没有。如果保存大量的数据用他。
- HashMap是Map的一个实现类,采用了哈希算法来存取Key对象,具有很好的存取性能。并且允许将null作为Map的Key或Value,HashMap也是没有实现同步机制的。
- hashMap和hashTable代码类似如下:
package 集合类练习; import java.util.Hashtable;
import java.util.Iterator; public class HashTableDemo { /**
* 时间:2014年4月22日17:17:56
* 目的:HashTable的应用
*/
public static void main(String[] args) {
//创建一个hashtable的对象
Hashtable ht = new Hashtable(); Emp emp1 = new Emp("01", "陈奕迅", 20.3f);
Emp emp2 = new Emp("02", "俞敏洪",1200f ); ht.put("01", emp1);
ht.put("02", emp2);
// ht.put(null, null);不能在hashtable中用null,在hashmap中可以。 //查找,查找编号为02的员工
if(ht.contains("02"))
{
System.out.println("可以找到该员工"); Emp emp = (Emp)ht.get("02");
System.out.println("名字是:"+emp.getName());
}else {
System.out.println("没有找到该员工");
} //遍历HashMap中所有的Key和Value
Iterator iterator = ht.keySet().iterator();//这一句话不能漏
while(iterator.hasNext())
{
//取出key
String keyString = iterator.next().toString(); Emp emp = (Emp)ht.get(keyString);
System.out.println("编号"+emp.getEmpNo());
System.out.println("名字"+emp.getName());
System.out.println("薪水"+emp.getSal());
} } }- Hashtable与hashMap的区别:1.hashtable是基于陈旧的Dictionary的,hashMap是java1.2引进的map接口的一个实现。2.hashTable是同步的,保证了hashtable中的对象是线程安全的,不过相对速度慢。3.hashMap可以让你将空值作为一个条目的key或value,但是Hashtable是不能放空值的。
- 集合类完,总结:1.如果要求线程安全可以使用Vector,hashtable。2.不要求同步使用Arraylist,LinkedList,hashMap.3.如果要求键值对,用HashMap和Hashtable。4.如果数据量很大,又要线程安全考虑vector。
java集合类的学习(二)的更多相关文章
- java集合类的学习(一)
为何要用集合类:可以储存不同类型的数据,可以进行动态的删除和修改,不用考虑数组越界的问题. 软件开发常用的集合类:Vector,ArrayList,Stack,HashMap,Hashtable. 3 ...
- JAVA多线程基础学习二:synchronized
本篇主要介绍Java多线程中的同步,也就是如何在Java语言中写出线程安全的程序,如何在Java语言中解决非线程安全的相关问题,没错就是使用synchronized. 一.如何解决线程安全问题? 一般 ...
- java集合类的学习总结一
概况总结 首先,区分最顶层接口的区别:Collection和Map的区别:前者是单个元素:后者存储的是一对元素.Collection有List和Set两个子接口,两个子接口下分别有Vector和Arr ...
- Java编程思想学习(二) 操作符
1. 对象“赋值”:对一个对象进行操作时,我们真正操作的是对对象的引用.所以倘若“将一个对象赋值给另一个对象”,实际是将“引用”从一个地方复制到另一个地方.(引用于对象之间存在关联,但这种关联可以被改 ...
- Java编程思想学习(二)----一切都是对象
2.1用应用操作对象 String s; 这里所创建的只是引用,并不是对象.如果此时向s发送一个消息,就会返回一个运行时错误.这是因为此时s没有和任何事物关联.因此,一种安全的做法是:创建一个引用的同 ...
- Java集合类总结 (二)
LinkedList类 由于基于数组的链表有一个大的缺点,那就是从链表中间移除一个元素时需要将此元素后面的所有元素向前移动,会产生大量的开销,同样的在链表中间插入一个新元素也会有大量开销.如下图: L ...
- java集合类(五)About Map
接上篇“java集合类(四)About Set” 这次学完Map之后,就剩队列的知识,之后有关java集合类的学习就将告一段落,之后可能会有java连接数据库,I/O,多线程,网络编程或Android ...
- java集合类(二)List学习
接上篇 java集合类(一) List接口继承了Collection接口和Iterable接口,即同样含有Collection和 Iterable的特性,还有方法,其基本方法有: 1)有关添加: b ...
- 201871010106-丁宣元 《面向对象程序设计(java)》第十二周学习总结
201871010106-丁宣元 <面向对象程序设计(java)>第十二周学习总结 正文开头: 项目 内容 这个作业属于哪个课程 https://home.cnblogs.com/u/nw ...
随机推荐
- csshover.htc CSS兼容
以下为csshover.htc 内容 <attach event="ondocumentready" handler="parseStylesheets" ...
- html中offsetTop、clientTop、scrollTop、offsetTop各属性介绍
例如:$('window').scrollTop()获取的就是当前这个页面超出窗口最上端的高度,scrollLeft与此同理 scrollHeight: 获取对象的滚动高度. scrollLeft:该 ...
- 百度在线笔试编程测试题(Python):整数分解成素数的积
编程测试题: 输入一个正整数将其分解成素数的乘积,输入格式连续输入m个数,然后将这m个数分别分解,如 输入: 2 10 20 输出: 2 5 2 2 5 Python code: def primes ...
- Tableau10.0学习随记-分组问题
1.根据官网的练习视频,分组时可多选列,之后使用回形针按钮创建分组,并重新命名即可,截图如下: 2.但在Tableau10中打开练习工作簿练习时,并没有直接显示分组后结果,仅仅是创建了分组的纬度,结果 ...
- java 文件按行读取
/*代码写的可能有点累赘里面的好多东西写的不太好 还望各位大佬能提点一二,不胜感激*/package com.zzp.fileopration;import java.io.*;/** * Creat ...
- phpMyAdmin - 错误 您应升级到 MySQL 5.5.0 或更高版本,解决办法。。。
折腾自己的个人网站,装了个数据库管理工具,遇到您应升级到 MySQL 5.5.0 或更高版本... 采用降级phpmyadmin版本的方法解决了: 查找phpmyadmin/libraries/com ...
- XmlHelper
获取XML节点的值(http服务使用xml传输数据,节点名称唯一) /// <summary> /// 获取xml节点的值 /// </summary> /// <par ...
- 揭秘JavaScript中谜一样的this
揭秘JavaScript中谜一样的this 在这篇文章里我想阐明JavaScript中的this,希望对你理解this的工作机制有一些帮助.作为JavaScript程序员学习this对于你的发展有 ...
- 学习docker
虚拟机下Ubuntu环境 1.sudo apt-get update 2.sudo apt-get install docker.io 3.在daocloud(http://www.daocloud. ...
- ionic开发中的各种坑
提前说明:这些坑是ionic1的. 一.关于缓存:<ion-view>中设置cache-view="false"表示禁用缓存,默认为true; 二.列表进入详情页面后返 ...