当前位置: 首页 > news >正文

java加强 -List集合

List集合是Collection集合下的集合的一种,它有序,可重复,有索引。但由于存在不同的底层实现方法,适合的场景也不同。

ArrayList底层是基于数组存储数据的,而LinkedList底层是基于链表存储数据的。因此,前者因为可以根据索引查询数据,查询数据的速度快,而后者是通过前一个数据找到后一个数据,因此无论找什么数据都得从第一个数字开始寻找。但前者的缺点是增删数据的效率低,若是删除了一个数据连着后面的数据也需要进行改动(前面的数据没了后面的数据需要向前移动一位),而链表没有这个要求,只需要将删除数据前一位的后继改为删除数据的后一位数据,删除数据后一位数据的前驱改为删除数据的前一位数据即可实现删除,时间复杂度为O(1)。因此,两种集合各有特性,适用于不同的应用场景

示例(ArrayList)

package List;import java.util.ArrayList;
import java.util.List;public class ListDemo1 {public static void main(String[] args) {//目标:掌握List系列集合独有的功能//有序,可重复,有索引List<String> names = new ArrayList<>();//添加元素names.add("张三");names.add("李四");names.add("王五");System.out.println(names);  //[张三, 李四, 王五]//给第三个数据插入一个数据:赵敏names.add(2,"赵敏");System.out.println(names);  //[张三, 李四, 赵敏, 王五]//删除李四,返回删除的元素String remove = names.remove(1);    //根据下标删除的数据,返回删除的元素System.out.println(remove);//王五改为金毛System.out.println(names.set(2,"金毛"));      //返回修改前的元素System.out.println(names);  //[张三, 赵敏, 金毛]//获取张三System.out.println(names.get(0));//遍历支持for循环,增强for,lambda,迭代器}
}

示例(LinkedList)

package List;import java.util.LinkedList;public class ListDemo2 {public static void main(String[] args) {//用LinkedList做一个队列对象LinkedList<String> queue = new LinkedList<>();//入队queue.addLast("赵敏");queue.addLast("陆小果");queue.addLast("橙留香");queue.addLast("梨花诗");queue.addLast("菠萝吹雪");//出队System.out.println(queue.removeFirst());System.out.println(queue.removeFirst());System.out.println(queue);//模拟栈LinkedList<String> stack = new LinkedList<>();stack.push("赵敏");stack.push("陆小果");stack.push("橙留香");stack.push("梨花诗");stack.push("菠萝吹雪");//出栈System.out.println(stack.pop());System.out.println(stack.pop());System.out.println(stack);}
}

因为LinkedList集合的特有方法(头插,尾插,头删,尾删),模拟栈和队列等数据结构时,使用LinkedList集合更优。

http://www.xdnf.cn/news/392581.html

相关文章:

  • LeetCode百题刷003(449周赛一二题)
  • 文件包含3
  • Qt 信号与槽及元对象系统
  • 判断两台设备是否在同一局域网内的具体方法
  • Unity 红点系统
  • Rockchip RK3308 开发(二)
  • 【人工智能】全面掌控:使用Python进行深度学习模型监控与调优
  • Springboot整合Swagger3
  • HttpServletResponse的理解
  • 【音视频工具】ffplay介绍
  • Redis 分布式锁
  • iOS实名认证模块的具体实现过程(swift)
  • 串口通讯
  • Docker使用ClickHouse | ClickHouse 配置用户名密码 | ClickHouse 可视化 | windows系统 | 镜像
  • [强化学习的数学原理—赵世钰老师]学习笔记01-基本概念
  • lampiao靶场渗透
  • # KVstorageBaseRaft-cpp 项目 RPC 模块源码学习
  • TikTok 账号运营干货:AI 驱动优化
  • Python----神经网络(基于Alex Net的花卉分类项目)
  • 按钮样式统一
  • Kids A-Z安卓版:儿童英语启蒙的优质选择
  • 特励达力科LeCroy推出Xena Freya Z800 800GE高性能的800G以太网测试平台
  • LLM 论文精读(四)LLM Post-Training: A Deep Dive into Reasoning Large Language Models
  • 基于多层权重博弈与广播机制的仿生类脑 AI 决策框架
  • 组合模式(Composite Pattern)详解
  • FR2012A富芮坤ADC:频繁调用adc_get_data要延时
  • 使用lldb看看Rust的HashMap
  • 三、c语言练习四题
  • Linux网络编程实现FTP服务器
  • 探秘 Cursor 核心:解锁系统提示词的进阶之路