Java重修笔记 第四十二天 LinkedList 类、ArrayList 和 LinkedList 比较

2024-08-26 03:12

本文主要是介绍Java重修笔记 第四十二天 LinkedList 类、ArrayList 和 LinkedList 比较,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • LinkedList 类

1. LinkedList 类底层是一个双向链表

2. LinkedList 类中有两个属性 first 和 last ,他们分别指向首节点和尾节点

3. 每个结点(LinkedList 的内部类 Node 对象)中有三个属性,prev 指向前一个结点、next 指向后一个结点、item 存储元素的值,来实现双向链表

4. 双向链表只需要操作 prev 和 next 的指向就可以完成添加的删除操作,不存在数组扩容和数据前移的情况,所以 LinkedList 添加的删除的效率比较高

  • LinkedList 类常用方法

1. public boolean add(E e)

        将指定元素插入到链表的末尾

2. public void add(int index, E element)

        在指定位置插入

3. public E remove()

        删除链表的第一个元素

4. public E remove(int index)

        删除链表中指定位置的元素

5. public boolean remove(Object o)

        删除链表中第一次出现的该元素

6. public E set(int index, E element)

        替换指定位置的元素

7. public E get(int index)

        返回指定元素

8. public int indexOf(Object o)

        返回该元素的索引,找不到返回-1

9. public int size()

        返回元素个数

  • ArrayList 和 LinkedList 比较

1. ArrayList 底层是可变数组

        修改和查询的效率高,因为 ArrayList 可以通过索引直接定位

        增加和删除的效率低,因为 ArrayList 要进行扩容

2. LinkedList 底层是双向链表

        修改和查询的效率低,因为 LinkedList 要从头结点一个一个遍历才能找到

        增加和删除的效率高,因为 LinkedList 只需要修改指针指向即可,不存在扩容

  • 如何选择 ArrayList 和 LinkedList 

1. 查询和修改的操作多就用 ArrayList , 修改和删除的操作多就用 LinkedList 

2. 实际开发中,80%以上都用的是 ArrayList 

3.  ArrayList 和 LinkedList 都是线程不安全的

这篇关于Java重修笔记 第四十二天 LinkedList 类、ArrayList 和 LinkedList 比较的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1107383

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听