所谓集合就是一个容器里面可以放各种元素,容器提供了增、删、改、查这几个功能。
容器有List和Set还有Map这三大类。
LIst中有ArrayList和LinkedList,ArrayList底层是个长度可变的数组,所以它有索引,可以通过普通for循环,增强for循环,以及Iterator来遍历。
LinkedList底层按照链式法则来存放数据,可以通过增强for循环和Iterator来遍历。
当List类型的集合在使用Iterator和for循环遍历时不能在遍历的同时增加集合元素,在使用Iterator时不能用List自带的remove方法移除元素,只能使用Iterator的remove方法来移除元素。
List类型的集合是有序的并且里面的元素可以重复。
HashSet中的元素是无序的并且不可以重复,HashSet会使用equals方法来判断是否有重复的元素,如果有需要的话可以改写equals方法,但随之必须再改写HashCode,因为当对象equals相等时其HashCode也肯定相等。
HashSet输出值的顺序与输入时的顺序不一直,这是因为存元素的时候使用了Hash算法,当输出元素时输出元素的顺序按照hash算法得出来的先后顺序而输出。
HashMap是以key-value的形式存放元素的,当你要找一个元素时只要找到他的key就可以找到它的value了。HashMap也是使用hash算法的,所以输出元素时的顺序与输入时的顺序不一样。
当你将key原来连接的value改掉时那么之后key对应的就是新的value值了。
由于底层存储方式的不同,造成了性能上的差异。
Array读快改慢
Linked改快读慢
Hash两者之间