Iterable(接口俗称迭代器,
优点:有增强for循环的功能(俗称foreach快速遍历)。
方法:
hasNext(); 是否存在下一项。
next();获取下一项。
remove();删除。配合next()使用。
Collection(接口java.util包)继承Iterable,是List,Set,Queue接口的父类。不是Map接口的父类。
优点:集合框架的顶级接口。
方法:size(); 返回集合的长度。
add(); 添加元素
remove(Object); 删除选中的某个元素。
iterator(); 遍历集合
Iterable 与 Collection 的remove方法比较有何区别?
相同点: 都是删除元素。
不同点:Iterable无参,需要配和next()方法使用,不能指定元素删除。
从性能方面说:Iterable删除效率高。
Collection的remove方法需要找到需要删除的项,因为是单链表结构,需要一个一个遍历才能找到需要删除的项,这个大大降低了删除的效率。
案例:集合装有1-50的数字。删除里面的偶数,这样Iterable的删除效率远远大于Collection 。
List接口: 有序,可以重复添加元素
遍历方式 :
下标
foreach(>=jdk1.5)
迭代器Iterator
常用的List的子类:
1.ArrayList:查询速度快,增删改速度慢。
单项列表结构。线程不同步。
项目中经常使用ArrayList,因为项目中查询次数多,对增删改的次数少。
2.LinkedList:查询速度慢,增删改速度快。
双向裂变结构。线程不同步。
案例:贪吃蛇案例,重复对集合的增加。
3.Vector:底层为数组结构。线程同步。被ArrayList替代了。因为效率低。
Set接口:无序,不可以重复。
常用set子类:
1.HashSet:速度最快,无序,只能存放一个null元素。
项目中的一对的关系处理就是使用HashSet。
2.treeSet:排序,并且以升序的方式排序,如手机的电话本排序等等。。
3.LinkedHashSet:先进先出的顺序。
Queue接口:先进先出
Map: 无序、以键值对的形式添加元素,键不能重复,值可以重复
它没有继承Collection接口
键:可以理解为Set集合,值可以理解为List集合。
常用Map子类:HashMap,访问速度最快,无序。
TreeMap: 升序保存键
LinkedHashMap: 按照插入顺序保存,
Array(数组)与ArrayList(集合)区别
Array:只能存储相同数据类型,长度不可变,固定的。
ArrayList:可以存储不同数据类型,一般为了代码的健壮性,会配合泛型使用。长度可变,是个动态数组。
Array.asList(数组的变量名); 数组转成集合
List.toArray(集合的变量名); 集合转成数组