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

List系列集合

List系列集合特点:有序,可重复,有索引

  ArrayList:有序,可重复,有索引

LinkedList:有序,可重复,有索引

(底层实现不同!适合的场景不同!)

List集合的特有方法

d7ce1e7aa33a4ccaa98b9105bb6ecbe5.png

1,创建一个ArrayList集合对象(有序,可重复,有索引)

 List<String> list = new ArrayList<>();//经典代码 List是接口list.add("简隋英");list.add("李玉");list.add("李玉");list.add("邵群");System.out.println(list);//[简隋英,李玉,李玉,邵群]

2,public void add(int index , E element):在某个索引位置插入元素

        list.add(2,"李程秀");System.out.println(list);//[简隋英,李玉,李程秀,李玉,邵群]

3,public E remove(int index):根据索引删除元素,返回被删除元素

        System.out.println(list.remove(2));//李程秀System.out.println(list);//[简隋英,李玉,李玉,邵群]

4,public E get(int index):返回集合中指定位置的元素

System.out.println(list.get(0));//简隋英

5,public E set(int index , E element):修改索引位置处的元素,修改成功后,会返回原来的数据

        System.out.println(list.set(2, "李程秀"));System.out.println(list);//[简隋英,李玉,李程秀,邵群]

List集合支持的遍历方式

1,for循环(因为List集合有索引)

import java.util.*;public class Work1 {public static void main(String[] args)  {List<String> list = new ArrayList<>();//经典代码 List是接口list.add("兰波");list.add("白楚年");list.add("陆言");list.add("毕揽星");//System.out.println(list);for (int i = 0; i < list.size(); i++) {String s = list.get(i);System.out.println(s);}

2,迭代器

         Iterator<String> it = list.iterator();while (it.hasNext()) {System.out.println(it.next());}

3,增强for循环

        for (String s : list) {System.out.println(s);}

4,Lambda表达式

        list.forEach(new Consumer<String>() {@Overridepublic void accept(String s) {System.out.println(s);}});}
}

ArrayList集合的底层原理

基于数组实现的

1da5dbd7371b40b1aebca5f407f27e70.png

 

查询速度快:查询数据通过地址值和索引定位,查询任意数据耗时相同

删除效率低:可能需要把后面很多的数据进行前移

添加效率极低:可能需要把后面很多的数据后移,再添加元素;或者也可能需要进行数组的扩容

ArrayList集合适合的应用场景

38c1bd460452442ba79639e2734c86ad.png

 

LinkedList集合的底层原理

基于双链表实现的

9b04267eef054f28819d65b886038345.png

ba6c43186e034f32b6e9f4b04498154e.png 

ac991d519c394ecba0ad971d2dfc3dc4.png 

3544a2eaa08b4ec7941739ca8a755b08.png 

5ed60dbd0ef74da2b788beaa560513f1.png 

 LinkedList的应用场景之一:可以用来设计队

import java.util.*;public class Work1 {public static void main(String[] args)  {//创建一个队列LinkedList<String> queue = new LinkedList<>();queue.addLast("1号");queue.addLast("2号");queue.addLast("3号");queue.addLast("4号");System.out.println(queue);//出队操作System.out.println(queue.removeFirst());System.out.println(queue.removeFirst());System.out.println(queue.removeFirst());}
}

LinkedList的应用场景之一:可以用来设计栈

749373b75e4a400e85bfc432e71b18d3.png

 

import java.util.*;public class Work1 {public static void main(String[] args)  {LinkedList<String> stack = new LinkedList<>();//压栈(push)stack.addFirst("第1颗子弹");stack.addFirst("第2颗子弹");stack.addFirst("第3颗子弹");stack.addFirst("第4颗子弹");System.out.println(stack);//出栈(pop)System.out.println(stack.removeFirst());System.out.println(stack.removeFirst());System.out.println(stack);}
}

 

 

http://www.lryc.cn/news/249773.html

相关文章:

  • SQL 金额数值转换成中文大写
  • 在Linux上安装KVM虚拟机
  • 软件设计之原型模式
  • Android之高级UI
  • Qt:解决跨线程调用socket/IO类,导致报错的问题
  • 长沙电信大楼火灾调查报告发布:系烟头引发。FIS来护航安全
  • 【Web系列二十七】Vue实现dom元素拖拽并限制移动范围
  • 【IEEE独立出版】2024第四届神经网络、信息与通信工程国际学术会议(NNICE 2024)
  • docker 推送tar包到远程仓库
  • 全志XR806基于FreeRTOS下部署竞技机器人先进模糊控制器
  • python动态加载内容抓取问题的解决实例
  • 系列二十三、将一个第三方的类配置成bean的方式
  • 【长文干货】Python可视化教程
  • 软件工程--需求工程--学习笔记(超详细)
  • TemplateHit中提取query和hit比对上序列索引的映射字典
  • 富必达API:一站式无代码开发集成电商平台、CRM和营销系统
  • 聊聊接口最大并发处理数
  • 6.如何利用LIO-SAM生成可用于机器人/无人机导航的二维/三维栅格地图--以octomap为例
  • 【多传感器融合】BEVFusion: 激光雷达和视觉融合框架 NeurIPS 2022
  • kafka中的常见问题处理
  • HarmonyOS(八)——@Styles装饰器:定义组件重用样式
  • 手写VUE后台管理系统5 - 整合状态管理组件pinia
  • 解决webpack打包生成gz格式css/js文件没法在nginx使用的问题--全网唯一正确
  • 传统算法: Pygame 实现快速排序
  • HarmonyOS入门开发(三) 持久化存储Preferences
  • 类和对象——(3)再识对象
  • 【UGUI】实现背包的常用操作
  • 单机zk安装与zk四字命令
  • matlab导入excel数据两种常见的方法
  • 华为全屋智能5.0,无为而“智”