当前位置: 首页 > 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集合更优。

相关文章:

  • 应急响应基础模拟靶机-security2
  • 御网杯2025 Web,Msic,密码 WP
  • 深入解析多选字段的存储与查询:从位运算到数据库设计的最佳实践
  • uni-app学习笔记(二)--vue页面代码的构成和新建页面
  • html body 设置heigth 100%,body内元素设置margin-top出滚动条(margin 重叠问题)
  • [学习]RTKLib详解:convkml.c、convrnx.c与geoid.c
  • 二、transformers基础组件之Tokenizer
  • 智能座舱开发工程师面试题
  • vue中理解MVVM
  • Ubuntu 22虚拟机【网络故障】快速解决指南
  • Qt坐标系 + 信号和槽 + connect函数(8)
  • LangChain入门(七) 提取和输出结构化数据
  • AI Agent(10):个人助手应用
  • 19、DeepSeek LLM论文笔记
  • ActiveMQ 生产环境问题排查与调优指南(一)
  • C语音学习---函数指针
  • MyBatis源码解读4(2.3、MyBatis运行流程)
  • 【ajax基础】
  • openjdk底层汇编指令调用(一)——汇编指令及指令编码基础
  • 设计模式之工厂模式(二):实际案例
  • 孙简任吉林省副省长
  • 耗资10亿潮汕豪宅“英之园”将强拆?区政府:非法占用集体土地
  • 秦洪看盘|交易新逻辑,银行股成A股稳定器
  • 明查|印度空军“又有一架战机被巴基斯坦击落,飞行员被俘”?
  • 农行深圳市分行原副行长王国彪涉嫌严重违纪违法被查
  • 年轻小将绽放光芒!中国短跑男女接力队直通东京世锦赛