Java集合总结与比较

32 篇文章 0 订阅
8 篇文章 0 订阅

1.线程安全的集合类:

vector:就比arraylist多了个同步化机制(线程安全),因为效率较低,现在已经不太建议使用。在web应用中,特别是前台页面,往往效率(页面响应速度)是优先考虑的。
statck:堆栈类,先进后出
hashtable:就比hashmap多了个线程安全
enumeration:枚举,相当于迭代器

2. hashtable跟hashmap的区别

hashtable是线程安全的,即hashtable的方法都提供了同步机制;hashmap不是线程安全的,即不提供同步机制 ;hashtable不允许插入空值,hashmap允许!

3.扩容机制;

(针对那些底层数据结构为数组而非链表的集合类如;Arraylist,Vector,Stack,hashtable,hashmap,hashset,linkedhashset)
一般有(阈值=总的容量 * 加载因子)的限制,当增加元素到达阈值后则扩容,一般扩容为两倍,Arraylist为1.5倍
List相关的类加载因子一般为1,Map与Set相关的加载因子一般为0.75,且Vector/Stack可以设定增长方式(固定数目增长),MapSet相关类可设定初始容量与加载因子。
扩容本身是数组创建赋值的过程;

4.简单的总结;

Collection为单列集合,Map(Set)为双列集合;
迭代器是维护了集合的游标,迭代器的迭代除了LinkedArraylist与LinkedHashset外都无法保证先入先出;
hashset要求重写对象的hashcode() 与equals()方法
看到Array就是数组结构,有角标,查询速度很快。
看到link就是链表结构:增删速度快,而且有特有方法。addFirst; addLast; removeFirst(); removeLast(); getFirst();getLast();
看到hash就是哈希表,就要想要哈希值,就要想到唯一性,就要想到存入到该结构的中的元素必须覆盖hashCode,equals方法。
看到tree就是二叉树,就要想到排序,就想要用到比较。
比较的两种方式:
一个是Comparable:覆盖compareTo方法;
一个是Comparator:覆盖compare方法。

5.获取异步的集合类的方式:

1)使用原有支持线程安全的集合类
2)使用Collections工具类的相关方法创建线程安全的集合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值