LinkedList
LinkedList
特点
底层是链表,增删快,查询慢
实践
package com.qianfeng.collection;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.ListIterator;
/**
* 功能描述
*
* @since 2022-05-07
*/
public class LinkedListDemo {
public static void main(String[] args) {
LinkedList<Object> linkedList = new LinkedList<>();
Student s1 = new Student("ZhangSan", 1);
Student s2 = new Student("LiSi", 2);
Student s3 = new Student("WangWu", 3);
// 添加数据
linkedList.add(s1);
linkedList.add(s2);
linkedList.add(s3);
// 删除数据
linkedList.remove(new Student("ZhangSan", 1));
// 遍历
// 由于List继承于Collection,所以可以使用增强for循环遍历
System.out.println("===============使用增强for循环遍历==================");
for (Object o : linkedList) {
System.out.println(o.toString());
}
// 由于List有下标,所以可以使用for循环遍历
System.out.println("===============使用for循环遍历==================");
for (int i = 0; i < linkedList.size(); i++) {
System.out.println(linkedList.get(i));
}
// 由于List继承于Collection,所以可以使用迭代器遍历
System.out.println("===============使用迭代器遍历==================");
Iterator it = linkedList.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
// List有列表迭代器,可以实现双向遍历、添加、删除、更新等操作
System.out.println("===============使用列表迭代器遍历==================");
ListIterator lit = linkedList.listIterator();
while (lit.hasNext()) {
System.out.println(lit.nextIndex() + ":" + lit.next());
}
while (lit.hasPrevious()) {
System.out.println(lit.previousIndex() + ":" + lit.previous());
}
// 判断
System.out.println(linkedList.isEmpty());
System.out.println(linkedList.contains(s3));
// 获取
linkedList.get(0);
}
}
与ArrayList的区别及使用场景
1.ArrayList底层是数组结构,查询快,增删慢,适用于多查询的场景
2.LinkedList底层是双向链表结构,查询慢,增删快,适用于增删频繁的场景