1.3java基础部分三:java的集合框架

本文简单介绍下java的集合框架,后续会对对应的源码再做分析。
1、有序集合接口为List,可添加重复元素,实现类有ArrayList、LinkedList、Vector,其中ArrayList是使用数组实现(线程非安全),LinkedList是使用链表实现(线程非安全),Vector是使用数组实现(线程安全);
2、无序集合接口为Set,不可添加重复元素,实现类有HashSet、TreeSet;
3、查找表Map以及实现类HashMap
他们的接口如下图,需要注意的是Map并没有实现Collection接口
java集合实现

ps:
1、虽然Map未实现Collection接口,但也可以认为它是一个 Entry键值对的set集合;
2、HashSet的内部是使用HashMap实现的,只是使用了Map的key列;
3、ArrayList和Vector内部实现逻辑并没有什么区别,他们两个区分是否线程安全的仅仅是Vector在操作元素以及集合内元素数量的时候加了synchronized关键字;
4、ArrayList是用数组实现的,初始长度为10,当添加元素超过数组长度时,数组会扩容,新长度为原长度的1.5倍;
5、HashMap的初始长度为16,有一个装载因子的概念,如果(map内元素个数/map长度)>=装载因子时,map会进行扩容(新长度为原有元素数量的2倍),并ReHash其中所有key;
6、如果需要对一个集合频繁的增删元素,特别是在集合中间增删元素,使用LinkedList的性能优于ArrayList;
7、针对于key相同value不同的两个元素,如何放在同一个map中?
答:原HashMap不支持,但是可以写一个类继承HashMap并重写hashCode()、equals()方法,在计算hashCode值时,添加value计算因子。需要注意的是,这时候如果需要取其中一个元素,那么就不能使用keyset的方式取了,而是要使用entryset取。
8:ArrayList、LinkedList、Vector等集合并不是Object类的子类,其中有hashCode、equals方法来自于collection接口。
collection接口内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值