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

3. List

数据结构在Java集合中的对应关系

线性表【数组】 -> ArrayList
线性表【链表】-> LinkedList
队列 -> Queue -> LinkedList,PriorityQueue, ArrayBlockingQueue … etc.
双端队列 -> Deque -> ArrayDeque
栈 -> LinkedList
哈希表 -> HashSet, HashTable, HashMap
跳表 -> ConcurrentSkipListMap
二叉树[red-black tree] -> treeMap, treeSet
哈希表 + 链表 -> LinkedHashMap, LinkedHashSet

List即数据结构中最基本的线性表,有数组和链表两种实现。 它的基本特征: 有序,可重复,除了第一个和最后一个元素,每个元素都只有一个前驱和一个后继。

Java 集合API中使用List接口来抽象化线性表,提供针对集合的CURD操作,相比Collection接口,List可以支持按索引位插入和查找,尤其当实现类是ArrayList时,可实现按下标的随机查找。

List接口方法

在Collection的基础上,新增如下方法:
1)E get(int index)
返回指定索引位上的值,如果底层是数组,可以随机访问,时间复杂度O(1), 如果是链表,不支持随机访问,时间复杂度是O(n)。

2) E set(int index, E element)
相当于replace, 即更新指定索引位置上的元素

3) void add(int index, E element)
在指定索引位上插入元素,底层是数组时如果该索引位不是size(),则会涉及到移位,此时时间复杂度是O(n), 而底层是链表时,比较简单,时间复杂度时O(1)

4) E remove(int index)
移除指定索引位的值

5) indexOf(Object o)
从前往后查找指定元素的索引位,找不到时为-1, 使用equals判断元素是否相等

6) lastIndexOf(Object o)
从后往前查找指定元素的索引位,找不到时为-1

7) ListIterator listIterator()
返回增强的Iterator,它在基本的iterator基础上,新增了CUD功能,还能向前遍历。

8) List of(E e1, E e2 …)
比较实用的方法,能基于给定的元素生成unmodifiable list

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 微服务之Eureka
  • 集简云平台助力无代码开发,实现平安银行与电商平台、CRM系统的快速连接
  • 每日汇评:黄金正在期待鲍威尔的讲话以获取新的方向动力
  • Linux 内核中根据文件inode号获取其对应的struct inode
  • 【计算机网络实验/wireshark】tcp建立和释放
  • PTA 哈利·波特的考试(floyd算法)
  • 【沐风老师】3dMax快速平铺纹理插件QuickTiles教程
  • 手握“发展密钥”,TCL科技或迎价值重估?
  • 【MongoDB-Redis-MySQL-Elasticsearch-Kibana-RabbitMQ-MinIO】Java全栈开发软件一网打尽
  • 用java代码实现security
  • 使用Scrapy的调试工具和日志系统定位并解决爬虫问题
  • Spring的缓存机制-循环依赖
  • CentOS/RHEL7环境下更改网卡名称为CentOS6的传统命名规则
  • 软件设计模式原则(二)开闭原则
  • [论文阅读]PV-RCNN++
  • Effective Java 笔记(一)
  • Fabric架构演变之路
  • FineReport中如何实现自动滚屏效果
  • Git同步原始仓库到Fork仓库中
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • MySQL数据库运维之数据恢复
  • 半理解系列--Promise的进化史
  • 基于web的全景—— Pannellum小试
  • 力扣(LeetCode)22
  • 前端攻城师
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 跳前端坑前,先看看这个!!
  • 微服务框架lagom
  • 小程序测试方案初探
  • 关于Android全面屏虚拟导航栏的适配总结
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #每天一道面试题# 什么是MySQL的回表查询
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (31)对象的克隆
  • (BFS)hdoj2377-Bus Pass
  • (delphi11最新学习资料) Object Pascal 学习笔记---第14章泛型第2节(泛型类的类构造函数)
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (含笔试题)深度解析数据在内存中的存储
  • (四)React组件、useState、组件样式
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)http-server应用
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • (转载)hibernate缓存
  • .NET 读取 JSON格式的数据
  • .NET 事件模型教程(二)
  • @zabbix数据库历史与趋势数据占用优化(mysql存储查询)
  • @四年级家长,这条香港优才计划+华侨生联考捷径,一定要看!
  • [20180312]进程管理其中的SQL Server进程占用内存远远大于SQL server内部统计出来的内存...
  • [AI 大模型] 百度 文心一言
  • [Angular 基础] - 表单:响应式表单
  • [Angularjs]asp.net mvc+angularjs+web api单页应用