Array,Vertor,Arraylist,Hashable,Hashmap等几个易混淆的概念

一、
Array可以存放Object和基本数据类型,但创建时必须指定数组的大小,并不能再

改变,Array可以存放任意类型的数据
Vertor是放的Object。
Vertor一维,Hashmap/Hashtabe二维;
Vertor/Arraylist用index作检索,Hashmap/Hashtabe用key作为检索;
Hashmap,Arraylist不是同步的,意味着它们的速度更快;
Hashtable,Vertor是同步的,适用于与线程有关时;
Hashtale的key不能为null,Hashmap的key和values都可以为null;

List(interface):次序是List最重要的特点;它确保维护元素特定的顺序。List为Collection添加了许多方法,使得能够向List中间插入与移除元素(只推荐LinkedList使用)。一个List可以生成ListIterator,使用它可以从两个方向遍历List,也可以从List中间插入和删除元素。

ArrayList:由数组实现的List。它允许对元素进行快速随机访问,但是向List中间插入与移除元素的速度很慢。ListIterator只应该用来由后向前遍历ArrayList,而不是用来插入和删除元素,因为这比LinkedList开销要大很多。

LinkedList:对顺序访问进行了优化,向List中间插入与删除得开销不大,随机访问则相对较慢(可用ArrayList代替)。它具有方法addFirst()、addLast()、getFirst()、getLast()、removeFirst()、removeLast(),这些方法(没有在任何接口或基类中定义过)使得LinkedList可以当作堆栈、队列和双向队列使用。

二、

性能方面:
通过索引访问和更新元素时,Vector和ArrayList的实现有着卓越的性能,因为不

存在除范围检查之外的其他开销。插入元素和删除元素总是要进行数组复制。

LinkedList的实质是个双向链表。ArrayList和Vector通常比LinkedList和同步封

装之后的LinkedList有着更好的性能。

Hashmap,Arraylist不是同步的,属于轻量级应用,性能上应该好些。

三、

ArrayList和Vector的区别,HashMap和Hashtable的区别
答:就ArrayList与Vector主要从二方面来说.
1.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的
2.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半
就HashMap与HashTable主要从三方面来说。
1.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java1.2引进的Map接口的一个实现
2.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的
3.值:只有HashMap可以让你将空值作为一个表的条目的key或value

四、

  迭代器

 

迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。

 

Java中的Iterator功能比较简单,并且只能单向移动:

 

(1)使用方法iterator()要求容器返回一个Iterator。

第一次调用Iterator的next()方法时,它返回序列的第一个元素。

 

(2)使用next()获得序列中的下一个元素。

 

(3)使用hasNext()检查序列中是否还有元素。

 

(4)使用remove()将迭代器新返回的元素删除。

 

Iterator是Java迭代器最简单的实现,为List设计的ListIterator具有更多的功能,它可以从两个方向遍历List,也可以从List中插入和删除元素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值