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 ...
随机推荐
- MEF 生命周期PartCreationPolicy
为什么要单独把这个生命周期捞出来单独说一说呢?因为我今天就被这个东东坑了一把……新加了一个界面,第二次打开界面的时候会报错“指定的元素已经是另一个元素的逻辑子元素”.好嘛,我一看,哟,感觉就是xaml ...
- Wpf之Xaml属性值和特性值(一)
其实我一直很好奇在xaml中,通过Attribute=Value这种方式可以进行对元素的描述, 例如: <Rectangle Name=” rectangle” Fill=”Blue”/> ...
- PSP记录个人项目耗时情况
四则运算编程 PSP记录个人项目耗时情况 PSP Personal Software Process Stages Time(%) Planning 计划 7 Estimate 估计这个任务需要多少时 ...
- vs启动调试很慢的解决办法
1.关闭所有 Visual Studio 2010 实例. 2.单击“开始”,选择“运行...”. 3.键入“devenv.exe /resetuserdata”. 此命令会运行几分钟时间,与此同时, ...
- Maven的配置
- WCF传输大数据的设置
在从客户端向WCF服务端传送较大数据(>65535B)的时候,发现程序直接从Reference的BeginInvoke跳到EndInvoke,没有进入服务端的Service实际逻辑中,怀疑是由于 ...
- PHP文件的读取
1.PHP部分文件操作函数 ( fopen ,fread ,filesize,fwrite,fclose ) 2.unlink() rmdir() 删除函数 unlink(路径和文件名): rmdi ...
- SharePoint中报表选择
Office 365中制作报表的方式很多. 这里介绍下使用js获取SharePoint List实现报表的一种方法 资源 Jquery 1.8.2 http://blog.jquery.com/201 ...
- usb端口号绑定
由于ubuntu USB设备号为从零开始依次累加,所以多个设备每次开机后设备号不固定,机器人每次开机都要蛋疼的按顺序插, 在网上找到一种方法:udev的规则 udev的规则说明,可以参考博客说明:ht ...
- Python Day04
一.迭代器与生成器: 迭代器(iterator): 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退,迭代器的一大优点是不要求事 ...