java中的集合
集合分为三大块:List,Set,Map
List分为ArrayList和LinkList
特点:可以添加重复的元素,有顺序
ArrayList和LinkList的区别?
ArrayList的优点:查询的速度快,缺点:增删改速度低
LinkList的优点:增删改速度快,缺点:查询的速度慢
iterable接口
1:实现iterable接口的类可以增强for循环
2:实现iterable接口的集合类必须提供一个名为iterator()的方法
Iterato方法
hasNext(): 是否存在下一项 next():获取下一项 remove():删除
Collection接口的remove()方法和Iterator接口的remove()方法区别?
①性能方面
1:Collection的remove方法必须首先找出要被删除的项,找到该项的位置需要从集合中一个一个遍历才能找到该对象,从而效率比较低;
2:Iterator的remove方法结合next()方法使用,比如集合中每隔一项删除一项,Iterator的remove()效率更高
②容错方面
1:在使用Iterator遍历时,如果使用Collection的remove则会报异常
2:在使用Iterator遍历时,不会报错,因为iterator内部的对象个数和原来集合中对象的个数会保持一致
set集合分为:HashSet、TreeSet、LinkedHashSet
①.需要速度快的集合,使用HashSet
②.需要集合有排序功能,使用TreeSet
③.需要按照插入的顺序存储集合,使用LinkedHashSet
List、Set、Map之间的区别
List和Set都继承Collection,但是Map不是Collection的子接口。
List:可以允许重复的元素,可以插入多个null元素,有序的容器
Set: 不允许重复元素,只允许一个null元素, 无序容器
Map:键值对存储,键必须唯一,但是值可以重复;键只允许一个null,值可以允许有多个null,插入的顺序和输出的顺序一样; 无序容器
HashMap和HashSet区别
HashMap:实现了Map接口,存储键值对,调用put()向map中添加元素,HashMap使用key计算hashcode,HashMap相对于HashSet较快,因为它是使用唯一的键获取对象
HashSet:实现了Set接口,存储对象,调用add()向set中添加元素,HashSet使用成员对象计算hashcode,HashSet较HashMap来说比较慢