目录
Collection集合
迭代器遍历
增强for遍历
Lambda表达式遍历
List集合
遍历
数据结构
栈
队列
数组
链表
前言: 学习JAVA的第十三天
Collection集合
Collection的遍历方式:
迭代器(不依赖索引)遍历
增强for遍历
Lambda表达式遍历
迭代器遍历
Collection集合获取迭代器
Iterator<E> iterator() | 返回迭代器对象,默认指向集合的0索引 |
Iterator中常见的方法
方法名称 | 说明 |
---|---|
boolean hasNext() | 判断当前位置是否有元素,有元素返回true,无元素返回false |
E next() | 获取当前位置的元素,并将迭代器对象移向下一个位置 |
注意事项:
循环中只能使用一次next()
迭代器遍历完成,指针不会复位
迭代器遍历时,不能使用集合的方法删除和添加
测试类
public static void main(String[] args) {
//创建集合添加对象
Collection<String> coll = new ArrayList<>();
coll.add("aa");
coll.add("bb");
coll.add("cc");
//获取迭代器对象
Iterator<String> it = coll.iterator();
//循环获取集合中每个元素
while(it.hasNext()){
String str = it.next();
System.out.print(str+" ");//aa bb cc
}
}
增强for遍历
增强for遍历的底层就是迭代器,不过是为了简化迭代器书写的
单列集合和数组才能使用增强for遍历
测试类
public static void main(String[] args) {
//创建集合
Collection<String> coll = new ArrayList<>();
coll.add("aaa");
coll.add("bbb");
coll.add("ccc");
//增强for遍历
for(String s : coll) {
System.out.print(s); //aaabbbccc
}
}
Lambda表达式遍历
提供一个更简单、更直接的遍历集合的方式
方法使用 :
测试类:
public static void main(String[] args) {
//创建集合
Collection<String> coll = new ArrayList<>();
coll.add("aaa");
coll.add("bbb");
coll.add("ccc");
//Lambda表达式
coll.forEach(s -> System.out.print(s)); //aaabbbccc
}
List集合
特点:
有序 :存和取的顺序一样
有索引 : 可以通过索引操作元素
可重复 : 存储的元素可以重复
方法:
List集合继承于Collection集合,但List有自己特有的方法
方法 | 说明 |
---|---|
add(int index ,E element) | 在集合的指定位置插入指定的元素 |
E remove(int index) | 删除指定索引的元素,返回删除的元素 |
E set(int index,E element ) | 修改指定索引的元素,返回修改的元素 |
E get(int index) | 返回指定索引的元素 |
测试类
public static void main(String[] args) {
//创建集合对象
List<String> list = new ArrayList<>();
//添加元素
list.add("aaa");
list.add("bbb");
list.add("ccc");
System.out.print(list+" ");// [aaa, bbb, ccc]
//在指定的索引添加元素
list.add(1,"nnn");
System.out.print(list+" ");//[aaa, nnn, bbb, ccc]
//删除指定索引的元素
System.out.println(list.remove(1));//nnn
System.out.print(list+" ");//[aaa, bbb, ccc]
//修改指定索引的元素
System.out.println(list.set(2, "ddd"));//ccc
System.out.print(list+" ");//[aaa, bbb, ddd]
//通过获取集合的元素
System.out.println(list.get(2));//ddd
}
遍历
迭代器遍历
列表迭代器遍历
Lambda表达式遍历
for循环遍历
增强for循环遍历
测试类:
public static void main(String[] args) {
//创建对象
List<String> list = new ArrayList<>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
//迭代器 可以用迭代器本身的方法增加元素 it.add()
Iterator<String> it = list.iterator();
while (it.hasNext()){
System.out.print(it.next());//aaabbbccc
}
//列表迭代器 遍历时可以添加元素
ListIterator<String> listIt = list.listIterator();
while(listIt.hasNext()){
System.out.println(listIt.next());//aaabbbccc
}
//增强for
for (String s : list) {
System.out.print(s);//aaabbbccc
}
//for循环
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i));//aaabbbccc
}
//Lambda表达式遍历
list.forEach(s -> System.out.print(s));//aaabbbccc
}
数据结构
计算机存储、组织数据的方式。
常见数据结构
- 栈
- 队列
- 数组
- 链表
- 二叉树
- 二叉查找树
- 平衡查找树
- 红黑树
栈
特点:后进先出,先进后出
过程 :
数据进入栈模型的过程:进栈(压栈)
数据离开栈模型的过程:出栈(弹栈)
队列
特点:先进先出、后进后出
过程:
数据从后端进入队列模型的过程:入队列
数据从前端离开队列模型的过程:出队列
数组
特点:元素在内存中是连续的
查询速度快
删除和添加效率相对慢
链表
特点:列表中每个元素叫做结点 (独立的对象)
查询速度慢
删除和添加效率相对快
过程: