首页 > 其他分享 >集合框架(二)LinkedList的常见使用

集合框架(二)LinkedList的常见使用

时间:2023-12-01 20:33:36浏览次数:47  
标签:遍历 LinkedList 框架 元素 list 链表 添加 集合

LinkedList:

非同步集合
LinkedList 不是同步集合,如果需要在多线程环境下访问该集合,需要手动实现线程同步。

双向链表实现
LinkedList 内部使用双向链表来表示集合元素,每个节点都存储了元素、前驱节点和后继节点信息。

添加/删除元素的效率较高
由于是链表实现,LinkedList 的添加/删除元素的操作的时间复杂度是 O(1),因为只需要改变节点间的链接关系。

随机访问元素的效率较低
由于是链表实现,LinkedList 的随机访问元素的操作的时间复杂度是 O(N),因为需要从头或者从尾开始遍历链表,直到找到指定位置的元素。

实现了多种接口
LinkedList 实现了多种接口,包括 List、Deque、Queue、Cloneable 和 Serializable 接口。

不支持并发修改
在使用迭代器遍历 LinkedList 集合时,如果在遍历过程中对集合进行了修改操作,例如添加或删除元素,就会抛出 ConcurrentModificationException 异常。

他的数据结构是链表,双向链表结构,由于链表没有将元素存储在连续的空间中,元素存储在单独的节点中,然后通过引用将节点连接起来了,因此在在任意位置插入或者删除元素时,不需要搬移元素,效率比较高。查询效率较低,因为查询一个元素需要从头部或尾部开始查询,挨个遍历每一个元素直到找到所需元素

常见的方法

1.添加/删除元素

LinkedList<String> list = new LinkedList<>();

// 在链表头部添加元素
list.addFirst("A");

// 在链表尾部添加元素
list.addLast("C");

// 在指定位置添加元素
list.add(1, "B");

// 删除第一个和最后一个元素
list.removeFirst();
list.removeLast();
2.获取元素

LinkedList<String> list = new LinkedList<>();

// 获取链表头部元素
String first = list.getFirst();

// 获取链表尾部元素
String last = list.getLast();

// 获取指定位置的元素
String element = list.get(1);

// 获取元素个数
int size = list.size();
3.迭代器遍历

LinkedList<String> list = new LinkedList<>();

// 添加元素

// 使用迭代器遍历
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String element = iterator.next();
// 处理当前元素
}
4.for-each 循环遍历的三种方法

LinkedList<String> list = new LinkedList<>();

// 添加元素

// 使用 for-each 循环遍历
for (String element : list) {
// 处理当前元素

}

————————————————
版权声明:本文为CSDN博主「小池敲代码了吗」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_73245042/article/details/134742749

博客来源:转载我自己

标签:遍历,LinkedList,框架,元素,list,链表,添加,集合
From: https://www.cnblogs.com/cq971/p/17870819.html

相关文章

  • 集合框架Map的常见使用及循环的五中方式
    Map集合是什么?Map集合是一种以键值对形式存储和操作数据的数据结构,建立了key-value之间的映射关系,常用于存储和处理复杂的数据Map集合的主要特点:Map和List不同,Map是一种双列集合;Map存储的是key-value的映射关系;Map不保证顺序。在遍历时,遍历的顺序不一定是put......
  • 《深度学习入门——自制框架》读书笔记
    1.自动微分step2创建变量的函数#箱子类,存放一个变量数据classVariable: def__init__(self,data): self.data=data#函数类的基类classFunction:#__call__方法是一个特殊的Python方法。#定义了这个方法后,当f=Function()时,就可以通过编写f(...)来......
  • 案例解析关于ArkUI框架中ForEach的潜在陷阱与性能优化
    本文分享自华为云社区《深入解析ForEach的潜在陷阱与性能优化:错误用法与性能下降的案例分析》,作者:柠檬味拥抱。在ArkUI框架中,ForEach接口是基于数组类型数据进行循环渲染的强大工具。它需要与容器组件搭配使用,并能够根据数据源动态生成相应的子组件。以下是对ForEach接口的详细......
  • 直播网站源码,写一个android底部导航栏框架
    直播网站源码,写一个android底部导航栏框架import'package:flutter/material.dart'; voidmain(){ runApp(MyApp());} classMyAppextendsStatelessWidget{ @override Widgetbuild(BuildContextcontext){  returnMaterialApp(   title:'BottomNaviga......
  • 掌握HarmonyOS框架的ArkTs如何管理和共享状态数据
    本文分享自华为云社区《深入理解ArkTs中的AppStorage和LocalStorage》,作者:柠檬味拥抱。ARKTS(ArkTypeScript)是HarmonyOS应用框架的一部分,提供了一种灵活而强大的状态管理机制。在ARKTS中,AppStorage和LocalStorage是两个关键的概念,它们分别用于应用级和页面级的状态共享。通过深......
  • ssh框架原理及流程
    1.hibernate工作原理:读取并解析配置文件读取并解析映射信息,创建sessionFactory打开session创建事务transaction持久化操作提交事务关闭session关闭sessionFactory  为什么使用:对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码是一个基于jdbc的主流持久性框......
  • 事事有回应:51CTO博客官方小助手,在此集合!
    “奖品什么时候发?”“为什么删除我的文章?”“我要申请TOP红人!”......关于活动福利、编辑器使用、博文的审核等等博客问题,欢迎博客的新老朋友们,有事没事,都可以找官方小助手聊一聊哦~(微信:cto51cto)【活动相关】目的:从活动开始到结束,全流程解答你的问题联系:加小助手【编辑器......
  • iOS开发_UIKit框架使用总结
    1、经常使用的1.1基础UIView、UILabel、UIImage、UIColor、UIImageView、UITextField、UIButton、UIFont1.2列表UIScrollView、UITableView、UICollectionView、UITextViewUICollectionViewCell、UITableViewCell1.3其他UIViewController2、偶尔使用的2.1功能专用UIPickerView(......
  • 如何使用Selenuim浏览器自动化框架实现自动登录社交媒体账号和自动发布文章
    在当今社交媒体盛行的时代,程序员们经常需要在不同的平台上自动执行一些任务,比如登录社交媒体账号并发布文章。本文将介绍如何利用Selenium浏览器自动化框架实现这一任务,同时结合万媒易发多平台内容同步助手,提高文章发布的效率。技术栈为了实现自动登录社交媒体账号和自动发布文......
  • (一)极速开发框架 - Ruoyi
    (一)极速开发框架-Ruoyi:https://zhuanlan.zhihu.com/p/484074325 Ruoyi框架【permission.js】【request.js】【store=>modules=>permission.js】【vite.config.js】:https://blog.csdn.net/m0_58293192/article/details/128440513?ops_request_misc=%257B%2522request%255Fid%2522......