1.3java基础部分三:java的集合框架
2017-12-22 17:08
375 查看
本文简单介绍下java的集合框架,后续会对对应的源码再做分析。
1、有序集合接口为List,可添加重复元素,实现类有ArrayList、LinkedList、Vector,其中ArrayList是使用数组实现(线程非安全),LinkedList是使用链表实现(线程非安全),Vector是使用数组实现(线程安全);
2、无序集合接口为Set,不可添加重复元素,实现类有HashSet、TreeSet;
3、查找表Map以及实现类HashMap
他们的接口如下图,需要注意的是Map并没有实现Collection接口
![](http://images2015.cnblogs.com/blog/916361/201603/916361-20160322135512683-168468369.jpg)
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接口。
1、有序集合接口为List,可添加重复元素,实现类有ArrayList、LinkedList、Vector,其中ArrayList是使用数组实现(线程非安全),LinkedList是使用链表实现(线程非安全),Vector是使用数组实现(线程安全);
2、无序集合接口为Set,不可添加重复元素,实现类有HashSet、TreeSet;
3、查找表Map以及实现类HashMap
他们的接口如下图,需要注意的是Map并没有实现Collection接口
![](http://images2015.cnblogs.com/blog/916361/201603/916361-20160322135512683-168468369.jpg)
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接口。
相关文章推荐
- 黑马程序员_Java基础_集合框架(四)_17
- Java基础知识强化之集合框架笔记14:List集合存储字符串并遍历
- Java基础知识-集合框架Set相关
- 黑马程序员——Java语言基础——06.集合框架(3)util包中的工具类和新特性
- 黑马程序员---Java基础--14天(集合框架之一)
- Java基础知识强化之集合框架笔记36:List练习之键盘录入多个数据在控制台输出最大值
- Java基础(集合框架——Collection、List、Set、泛型)
- Java基础之集合框架--Collections.synchronizedList() 线程安全的List
- [Java框架-grails从基础到实践]7、集合
- 黑马程序员——Java语言基础:集合框架(Collection、Map,工具类Collections、Arrays)
- Java基础-集合框架1 综述
- Java基础之集合框架详解(一)
- Java基础之集合框架--ArrayList
- 黑马程序员—java技术blog—第七篇集合整体基础框架概述
- java 集合框架【2】 经典解析部分是转载
- Java基础知识强化之集合框架笔记01:集合的由来与数组的区别
- java基础-- 集合框架 之 Set集合
- java语言基础(64)——集合框架(集合的由来以及数组集合的区别 集合的遍历)
- Java基础知识强化之集合框架笔记63:Map集合之HashMap嵌套ArrayList
- Java基础之集合框架--Collections工具类中的sort()方法