2022Java学习笔记六十二(List系列集合:List集合特有的API、集合底层原、LinkedList集合的API使用)
一、List系列集合的特点
1、ArrayList、LinekdList:有序、可重复、有索引
2、有序:存储和取出的元素顺序一致
3、有索引:可以通过索引操作元素
4、可重复:存储的元素可以重复
二、List集合特有的API
Collection的功能List也都继承了
示例代码
package com.zcl.List;
import java.util.ArrayList;
import java.util.List;
public class ListDemo {
public static void main(String[] args) {
// 目标:学会使用List集合
List<String> list = new ArrayList<>();
list.add("张三学java");
list.add("张三学C#");
list.add("张三学MYSQL");
list.add("张三学C++");
System.out.println(list); // [张三学java, 张三学C#, 张三学MYSQL, 张三学C++]
// 2、在指定的索引位置插入元素
list.add(2,"我是插班的"); // [张三学java, 张三学C#, 我是插班的, 张三学MYSQL, 张三学C++]
System.out.println(list);
// 3、根据索引位置删除元素,返回删除的元素
System.out.println(list.remove(3)); // 张三学MYSQL
// 4、根据索引找出元素,返回查找的元素
System.out.println(list.get(1)); // 张三学C#
// 5、修改指定索引位置的元素,返回被修改的元素
System.out.println(list.set(2, "我改学科了")); // 我是插班的
System.out.println(list); // [张三学java, 张三学C#, 我改学科了, 张三学C++]
// 也可以使用Collection中的清除方法
// list.clear();
}
}
三、List遍历集合
示例代码
package com.zcl.List;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.function.Consumer;
public class ListDemo2 {
public static void main(String[] args) {
// 目标:回顾集合的遍历
List<String> list = new ArrayList<>();
// 往集合中添加元素
list.add("元素1");
list.add("元素2");
list.add("元素3");
// 1、for循环遍历
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
System.out.println("----迭代器遍历二-----");
// 2、使用迭代器遍历
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
System.out.println("-----foreach遍历-----");
for (String s : list) {
System.out.println(s);
}
System.out.println("-----forEach遍历-----");
list.forEach(new Consumer<String>() {
@Override
public void accept(String s) {
System.out.println(s);
}
});
}
}
四、ArrayList集合底层原
五、LinkedList集合的API使用
继承了Collection的方法
示例代码
package com.zcl.LinkedList;
import java.util.LinkedList;
public class Demo {
public static void main(String[] args) {
// 目标:学会LinkedList集合特有方法
// LinkedList可以用来表示 栈 和 队列
LinkedList<String> link = new LinkedList<>();
/*
建议使用专业词汇
push() 入栈 ----- addFirst()
pop() 出栈 ----- removeFirst()
*/
// 入栈、压栈
link.push("第一颗子弹");
link.push("第二颗子弹");
link.push("第三颗子弹");
link.push("第四颗子弹");
System.out.println(link); // [第四颗子弹, 第三颗子弹, 第二颗子弹, 第一颗子弹]
// 出栈、弹栈
System.out.println(link.pop()); // 第四颗子弹
System.out.println(link.pop()); // 第三颗子弹
System.out.println(link.pop()); // 第二颗子弹
System.out.println(link.pop()); // 第一颗子弹
System.out.println(link); // []
// linkedList表示队列
LinkedList<String> queue = new LinkedList<>();
// 入队
queue.addLast("1号排队");
queue.addLast("2号排队");
queue.addLast("3号排队");
queue.addLast("4号排队");
queue.addLast("5号排队");
System.out.println(queue); // [1号排队, 2号排队, 3号排队, 4号排队, 5号排队]
// 出队
System.out.println(queue.removeFirst());
System.out.println(queue.removeFirst());
System.out.println(queue.removeFirst());
System.out.println(queue.removeFirst());
System.out.println(queue.removeFirst());
/*
像餐饮系统的叫号就可以用linedList来做,有一个号就存进来,叫一个号就放出去
*/
}
}