集合框架

collection分为listset

   list:继承自collection,list的特点是存储元素有序可为空,其具体实现由ArrayListLinkedList。

  ArrayList:实现了动态数组,允许空值,类似于动态数组,查询元素快而,插入元素效率低,因为每次元素的位置都要移动,线程不安全

   LinkedList:链表结构,线程不安全,查询元素效率低,而插入元素效率高,addfirst,addlast  removefist等。适合用来实现堆栈(stack先进后出的结构)和队列(Queue先进先出)。要想创建线程安全的list有两种方法

   第一种:使用synchronized关键字

    第二种:通过 List   list=new   collections.synchronizedList(new ArrayList());

vector:类似于ArrayList,是线程安全的,在一个线程获取vector的iterator时并且被使用时,如果另一个线程对vector进行修改就会抛出ConcurrentModificationException异常,这就是fail-fast机制。

    stack:继承自vector,后进先出的堆栈结构。常用的方法有:

boolean

empty() 
测试堆栈是否为空。

E

peek() 
查看堆栈顶部的对象,但不从堆栈中移除它。

E

pop() 
移除堆栈顶部的对象,并作为此函数的值返回该对象。

E

push(Eitem)
把项压入堆栈顶部。

int

search(Objecto)
返回对象在堆栈中的位置,以 1 为



set:继承自collection,set的特点是存储元素无序且不可重复。允许有一个空值。具体实现有hashset和treeset linkedhshset

hashset:不允许重复元素 ,不保证顺序

treeset:采用树形结构来存储数据,每个节点都会保存指针对象,分别指向父节点,左分支和右分支。

LinkedHashSet : 具有HashSet的查询速度,且内部使用链表维护元素的顺序(插入的次序)。于是在使用迭代器遍历Set时,结果会按元素插入的次序显示



map不属于collection接口,其位于java.util.map包下,有四个实现类:hashmap,treemap,linkedhashmap,hashtable

hashmap:采用键值对的方式存储数据,key不允许重复(可以有唯一一个空值),value可以有重复值。线程不安全,可以用collections的synchronizedMap来创建安全的hashmap。

treemap:存储的数据是根据键排序的,默认是升序,用iterator迭代得到的是经过排序的数据。

hashtable:和hashmap类似,不同的是不允许键和值是空值,并且是线程安全的。所以写入速度较慢

LinkedHashMap保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的.在遍历 的时候会比HashMap慢。




集合类的选择:

hashMap利用对象的hashcode来快速找到key。

 










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值