集合
集合和数组的对比
-
数组长度固定,集合长度可变
ArrayList
public class arrayListdome01 { public static void main(String[] args) { //1.创建一个集合对象 //泛型:限定集合中存储数据的类型 //ArrayList<String> list = new ArrayList<String>(); //jdk7: ArrayList<String> list = new ArrayList<>(); //此时我们创建的是ArrayList的对象,而ArryaList是java已经写好的一个类 //这个类在底层做了处理 //打印对象不是地址值,是集合中储存数据的内容 //展示时会用[]把内容括起来 System.out.println(list); } }
集合体系结构
-
Collection 单列集合
是单列集合的祖宗接口,它的功能是全部单列集合都可以继承使用的
-
List(添加元素是有序【存取顺序,不是大小关系】,可重复,有索引)
- ArrayList
-
LinkedList
-
Vector(已被淘汰)
-
-
Set(添加元素是无序,不重复,无索引)
-
HashSet
-
LinkedHashSet
-
-
TreeSet
-
-
-
Map双列集合
Collection的遍历方式
-
迭代器遍历
-
不依赖索引(创建指针和移动指针)
-
在java中的类是Iterator,是他的专用遍历方式
-
Collection集合获取迭代器
Iterator<E> iterator();//返回迭代器对象,默认指向当前集合的0索引 //Iterator中的常用方法 boolean hasNext() //判断当前位置是否有元素,有元素返回true,没有元素返回false E next()//获取当前位置的元素,并将迭代器对象移项下一个位置(只能使用一次) remove//删除
-
当上面的循环结束之后,迭代器的指针已经指向没有元素的位置,会报错:NoSuchElementException
-
-
增强for遍历(简化迭代器的代码书写)
-
增强for的底层就是迭代器,为了简化迭代器的代码书写
-
它是JDK5之后出现的,其内部原理就是一个Iterator迭代器
-
所有的单列集合和数组才能用增强for进行遍历
-
for(元素的数据类型 变量名:数组或者集合){ }
-
小细节:
-
修改增强for中的变量,不会改变集合中原本的数据
-
-
-
Lamba表达式遍历
default void forEach(Consumer<? super T> action)://结合lambda遍历集合 关于省略: 1.数据类型可以省 2.如果参数只有一个,小括号可以省略 3.方法体只有一行,大括号、分号、return、可以省略 4.new Consumer<String>(){public void accept}可以删掉
-
小结:
-
Collection是单列集合的底层接口,所有方法被list和set系列集合共享
-
常见成员方法:
-
add、clear、remove、contains、isEmpt、size
-
-
迭代器:在遍历过程中需要删除元素,请使用迭代器
-
增强for、Lambda:仅仅想遍历,那么使用for或Lambda表达式
-
List集合
-
有序,可重复,有索引
-
继承Collection
-
遍历方式
-
迭代器遍历
-
列表迭代器遍历
-
增强for遍历
-
Lambda表达式遍历
-
普通for循环遍历
-
五种遍历方式对比
-
迭代器遍历
在遍历过程中需要删除元素
-
列表迭代器遍历(list独有)
在遍历过程中需要添加元素
-
增强for遍历、Lambda表达式遍历
仅仅想遍历
-
普通for循环遍历
如果便利的时候想操作索引