1.Java集合是java提供的一个工具包,全部继承自java.util.*。主要包括两大接口Collection接口和Map接口
2.集合大致分为
List
Set
Map
Queue(不常用)
- List、Set、Queue的父接口是Collection
- Map与List、Set没有任何关系
3Collection的父接口是Iterator(迭代器接口)
3.List
List常用的两种实现类ArrayList、LinkedList 区别
1、ArrayList是数组结构,而LinkedList是链表结构
2、ArrayList查询的速度比LinkedList查询的速度快
3、ArrayList增加删除的速度比LinkedList增加删除的速度慢
4.Set
Set的实现类有HashSet和TreeSet。LinkedHashSet
1、HashSet的速度最快
2、TreeSet有排序功能
3、LinkedHashSet有顺序
5.Map
Map是一个映射接口,通过key-value键值对实现。常用实现类有HashMap,TreeMap,LinkedHashMap
1、HashMap:速度最快,没有顺序
2、TreeMap:有排序功能
3、LinkedHashMap:有顺序
6.Queue
特点:先进先出
7.Collection接口的remove()方法和Iterator接口的remove()方法区别?
①性能方面
Collection的remove方法必须首先找出要被删除的项,找到该项的位置采用的是单链表结构查询,单链表查询效率比较低,需要从集合中一个一个遍历才能找到该对象;
Iterator的remove方法结合next()方法使用,比如集合中每隔一项删除一项,Iterator的remove()效率更高
②容错方面
在使用Iterator遍历时,如果使用Collection的remove则会报异常,会出现ConcurrentModificationException,因为集合中对象的个数会改变而Iterator 内部对象的个数不会,不一致则会出现该异常
在使用Iterator遍历时,不会报错,因为iterator内部的对象个数和原来集合中对象的个数会保持一致
8、HashMap与HashSet的区别
1、HashMap实现了Map接口,HashSet实现了Set接口
2、HashMap存储键值对,HashSet存储对象
3、HashMap相当于HashSet较快
4、添加元素时HashMap是用put(),HashSet用add()
9、List、Set、Map之间的区别
1、list和set都继承Collection,map不是Collection的子接口
2、list可以有重复的值,set不能有重复的值,map是键值对,键不能重复,值可以重复
3、list可以插入多个null,set只能有一个null,map键只能有一个,值可以有多个
4、list有顺序,set没有顺序,map也没有顺序
10.Array与ArrayList有什么区别
1.ArrayList是Array的复杂版本
2.存储的数据类型:Array只能存储相同数据类型的数据,而ArrayList可以存储不同数据类型的数据
3.长度的可变:Array的长度是固定的,而ArrayList的长度是可变的
11、HashMap和HashSet区别
实现了map接口
HasHMap | HashSet |
---|---|
实现了Map接口 | 实现了Set接口 |
存储键值对 | 存储对象 |
调用put()向map中添加元素 | 调用add()向set中添加元素 |
HashMap使用key计算hashcode | HashSet使用成员对象计算hashcode |
HashMap相对于HashSet较快,因为它是使用唯一的键获取对象 | HashSet较HashMap来说比较慢 |