总结:Java集合之间的区别

1、集合中包含以下:

Collection接口:
List接口:
Set接口:
Queue接口:
Arrays数组:
Map接口:

2、Collection接口:

2-1:有以下方法:

名称 作用
size() 返回集合中的项数
isEmpty() 判断集合是否为空
contains(Object) contains(Object)
clear() 清除
add(E) 从集合中添加某项
remove(Object) 从集合中删除某项
iterator() 遍历集合

2-2:Collection 继承 Iterable接口
2-2-1:实现iterable接口的类可以拥有增强for循环
2-2-2:集合类必须提供一个名为iterable()的方法,该方法的返回值为iterator

2-3:Iterator方法

名称 作用
hashNext() 是否存在下一项
next() 获取下一项
remove() 该方法可以生成由next()最新返回的项(注意:此后不能调用remove,直到next再一次调用以后)

2-4:Collection接口的remove()和iterator接口的remove()方法的区别?

Collection 的remove() iterator的remove()
单链表查询效率低 结合next()方法使用,效率更高
会报错,ConcurremModificationException,集合对象个数改变而iterator内部对象个数不变 不会报错,内部对象个数和原来集合对象个数一样

3、List接口:

特点:
可以添加重复的元素
有顺序 的

3-1: ArrayList与LinkedList 区别?

ArrayList LinkedList
数组结构 链表结构
优点 get和set调用花费常数时间,查询速度快 新项插入和现有项插入的删除开销很小
缺点 新项插入和现有项插入的删除代价昂贵,,除非是在末端进行 对get和set调用昂贵

4、Set接口:

特点:
不保存重复的元素
没有顺序

4-1:HashSet:
优点:速度最快,没有明显的顺序保存元素
缺点:集合元素可以为null,但是只能放入一个null。

4-2:TreeSet:
按照比较结果的升序保存对象

4-3:LinkedHashSet:
按照被添加的顺序保存对象

4-4:HashSet、TreeSet、LinkedHashSet区别?
①:需要速度快的集合-----> HashSet
②:需要集合有排序功能 ------->TreeSet
③:需要按照插入顺序存储集合------>LinkedHashSet

5、Map接口:

5-1:HashMap:
优点:访问速度最快。无顺序保存元素

5-2:TreeMap
按照比较结果的升序保存键

5-3:LinkedHashMap:
优点:有顺序的,查询速度快(保留了HashMap的查询速度)

5-4:HashMap、TreeMap、linkedHashMap区别?
①.在Map中插入、删除和定位元素,HashMap是最好的选择
②.需要集合有排序功能,使用TreeMap更好
③.需要按照插入的顺序存储集合,使用LinkedHashMap

6、Array和ArrayList的区别?

ArralyList是Array的复杂版本

Array ArrayList
Arrays是数组 ArralyList是集合
只能存储相同数据类型 存储不同数据类型
长度是固定 长度是可变

6-1:关于ArrayList 容量问题

ArrayList 是实现List 接口的动态数组,即它的容量大小是可变的。允许包括null 在内的所欲元素。

每个ArrayList 实例都有一个容量,该容量是指用来存储列表元素的数组的大小。默认初始容量为10.

随着ArrayList 中元素的增加,它的容量会不端的自动增长。在每次添加新的元素时,ArrayList 都会检查是否需要进行扩容操作,扩容操作带来数据向新数组的重新拷贝。所以,如果已知业务数据量,在构造ArrayList 时可以 指定一个初始容量,这样会减少扩容时数据的拷贝问题。当然在添加大量元素前,应用程序也可以使用ensureCapacity操作来增加ArrayList实例的容量,这可以减少递增式再分配的数量。

具体可以查阅 ArrayList 的源码

ensureCapacity(),该方法就是ArrayList的扩容方法。而每次扩容的容量计算方式

       //计算新的容量大小,为当前容量的1.5倍
            int newCapacity = (oldCapacity * 3) / 2 + 1;

参考链接:http://www.cnblogs.com/chenssy/p/3498468.html

7、HashMap与HashSet区别?

HashMap HashSet
实现了Map接口 实现了Set接口
存储键值对 存储对象
调用put()向map中添加元素 调用add()向set中添加元素
HashMap使用key计算hashcode HashSet使用成员对象计算hashcode
HashMap相对于HashSet较快,因为它是使用唯一的键获取对象 HashSet较HashMap来说比较慢

8、List、Set、Map之间的区别

List Set Map
可以允许重复的元素 不允许重复元素 键值对存储,键必须唯一,但是值可以重复
可以插入多个null元素 只允许一个null元素 键只允许一个null,
值可以允许有多个null
有序的容器,插入的顺序和输出的顺序一样 无序容器 无序容器

9、Queue 通道、队列:

队列与堆栈的区别?

队列 堆栈
先进先出 先进后出

10:Queue、Message、Looper、Handler之间的关系

总结:Java集合之间的区别_第1张图片

11、总结:

结合这张思维导图,结构一目了然!
总结:Java集合之间的区别_第2张图片

你可能感兴趣的:(Java集合)