黄小华的个人网站
熬过无人问津的日子才有诗和远方!
Java集合的框架

Collection

对象是封装数据的,集合是用于存储对象的。
集合长度可变,只能存储引用数据类型,可以是不同数据类型。
Collection Collection是接口的接口(单列集合)
├——-List 接口:元素按进入先后有序保存,可重复
│—————-├ LinkedList 接口实现类, 链表, 插入删除效率高, 没有同步, 线程不安全
│—————-├ ArrayList 接口实现类, 数组, 查询效率高, 没有同步, 线程不安全
│—————-└ Vector 接口实现类 数组, 同步, 线程安全
│ ———————-└ Stack 是Vector类的实现类
└——-Set 接口: 仅接收一次,不可重复,无序
├—————-└HashSet 使用hash表(数组)存储元素
│————————└ LinkedHashSet 链表维护元素的插入次序
└ —————-TreeSet 底层实现为二叉树,元素排好序
1.添加
add(object)添加一个元素
addAll(Collection)添加一个集合中所有元素
2.删除
clear()清空集合
remove(obj)删除指定元素
removeAll(Collection)删除部分与Collection中一致的元素
3.判断
contains(obj)集合是否包含指定元素
containsAll(Collection)集合中是否包含指定的多个元素
isEmpty()集合是否为空
4.获取
size()集合中有几个元素
5.交集
retainAll(Collection)是否有交集 6.iterator() 迭代器
7.集合转数组
toArray()

Map Map 接口 键值对的集合 (双列集合)
├———Hashtable 接口实现类,哈希表,同步线程安全
├———HashMap 接口实现类 数组+链表+红黑树,没有同步,线程不安全
|———ConcurenHashMap hashMap的线程安全实现 │—————–├ LinkedHashMap 双向链表+哈希表实现
├———TreeMap 红黑树 对所有的key进行排序

HashTable底层实现和HashMap实现原理基本上一致,只不过HashTable等所有提供的方法都通过Synchronzied修饰,所以HashTable是线程安全的,但是性能比较差。深入理解HashMap可以看我另一篇博文
20180803205119738.png

集合常用的工具类有Collections和Arrays。
Arrays.copyOfRange(T[ ] original,int from,int to) 返回新数组
将一个原始的数组original,从下标from开始复制,复制到上标to前一个元素,
Arrays.sort(object[]) 对数组排序 Arrays.toString(Object[] array) 返回数组的字符串形式