Java中ArrayList,LinkedList,Vector三者的异同点及其使用场景和ArrayList的一些常用方法

相同点:三者存储的都是有序,可重复的数据。

异:

①:ArrayList底层存储类型是Object数组,而LinkedList底层是双向链表

②:ArrayList和Vector调用创建空参构造器创建对象时,默认的size是10,但是当自动扩容的时候,ArrayList扩容为当前容器size的1.5倍,而Vector自动扩容为当前的2倍。

使用场景:

①:当查找操作比较多时,使用ArrayList,因为其底层是数组实现,可以根据脚标查找,时间复杂度是O(1),而LinkedList底层是双向链表,查找起来还要遍历,其时间复杂度是O(n)。

②:当插入,删除操作比较多时,使用LinkedList,其只需要修改pre和last指针即可,时间复杂度为O(1),而ArrayList还要遍历数组,时间复杂度为O(n)。

Eg:Vector是一个List接口的一个古老实现类,一般不使用,做项目时使用的一般是ArrayList。

下面是一些ArrayList的一些常用方法:

    @Testpublic void test1() {ArrayList arrayList1 = new ArrayList();arrayList1.add(123);arrayList1.add(456);arrayList1.add(45);arrayList1.add(34);arrayList1.add(54);System.out.println(arrayList1);ArrayList arrayList2 = new ArrayList();arrayList2.add(123);arrayList2.add("adf");arrayList2.add(456);arrayList2.add("ngf");arrayList2.add("cxvb");//retainAll()作用是将arrayList1和arrayList2的交集存储在arrayList1中//返回值是boolean型boolean b = arrayList1.retainAll(arrayList2);System.out.println(b);System.out.println(arrayList1);//关于remove()方法具体可以看我的另一篇文章boolean remove = arrayList1.remove(new Integer(54));System.out.println(remove);Iterator iterator1 = arrayList1.iterator();while (iterator1.hasNext()) {System.out.println(iterator1.next());}//        remove方法Object remove1 = arrayList1.remove(4);System.out.println(remove);System.out.println("***************************");System.out.println("***************************");for (Object o:arrayList1){System.out.println(o);}System.out.println("***************************");System.out.println(arrayList1.containsAll(arrayList2));System.out.println("***************************");boolean b1 = arrayList1.contains(34);System.out.println(b1);System.out.println("***************************");
//        arrayList1.addAll(arrayList2);
//        Iterator iterator2 = arrayList1.iterator();
//        while (iterator2.hasNext()){
//            System.out.println(iterator2.next());
//        }//其实在index角标处加上相应的元素arrayList1.add(3,arrayList2);System.out.println(arrayList1);System.out.println("***************************");//sublist相当于copy了一份角标在[from,last)的值,然后复制给了一个新的集合,// 执行此方法的集合不变List list = arrayList1.subList(0, 2);System.out.println(list);System.out.println(arrayList1);System.out.println("***************************");


---------------------
作者:奋力的小码农
来源:CSDN
原文:https://blog.csdn.net/qq_54217349/article/details/123444741
版权声明:本文为作者原创文章,转载请附上博文链接!
内容解析By:CSDN,CNBLOG博客文章一键转载插件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/283691.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第二百四十六节,Bootstrap弹出框和警告框插件

Bootstrap弹出框和警告框插件 学习要点: 1.弹出框 2.警告框 本节课我们主要学习一下 Bootstrap 中的弹出框和警告框插件。 一.弹出框 弹出框即点击一个元素弹出一个包含标题和内容的容器。 基本用法 注意:必须在js结合popover()方法使用 da…

Intellij IDEA2017 的控制台里不识别maven命令问题处理

2019独角兽企业重金招聘Python工程师标准>>> cmd里运行 mvn -v可以显示出maven的版本信息,可是在IDEA的控制台里却提示不识别maven命令,此情况以管理员的身份运行IDEA即可。 转载于:https://my.oschina.net/u/2364025/blog/1788797

使用IDEA 提交代码到svn

2019独角兽企业重金招聘Python工程师标准>>> 新手第一次使用教程: 一、安装svn TortoiseSVN是个客户端,需要安装VisualSVN服务端。 二、IDEA配置(Ctrl alt S) 需要配置服务端svn.exe文件。 三、上传代码 svn路径&…

如何在 BackgroundService 获取 ASP.NET Core 启动地址

前言上次,我们介绍了《如何获取 ASP.NET Core 启动地址》。但是,如果要在 BackgroundService 中获取启动地址可不那么容易,因为 BackgroundService 在 app 启动前就开始执行了:var builder WebApplication.CreateBuilder(args); builder.Ser…

016-Spring Boot JDBC

一、数据源装配 通过查看代码可知,默认已装配了数据源和JdbcTemplate System.out.println(context.getBean(DataSource.class)); System.out.println(context.getBean(JdbcTemplate.class)); 1.1、环境搭建 主要是pom引用:spring-boot-starter-jdbc、增加…

分库分表和 NewSQL 到底怎么选?

文章来源:【公众号:CoderW】 目录 背景 分表 分库 分库分表的成本 NewSQL NewSQL 平滑接入方案 NewSQL 真的有那么好吗? NewSQL 的应用 分库分表和 NewSQL 到底怎么选? 背景 曾几何时,“并发高就分库&#xff…

jQuery/javascript实现简单网页计算器

1 <html>2 <head>3 <meta charset"utf-8">4 <title>jQuery实现</title>5 <script src"jquery.js"></script>6 7 <style type"text/css">8 table{background-color:pink;width:300px;height…

雷军招人反被3句话问懵:当我在面试牛人的时候,牛人也在面试我

来 源&#xff5c;环球人力资源智库&#xff08;GHRlib&#xff09; 作 者&#xff5c;Black “你做过手机吗&#xff1f;” “没做过。” “你认识中移动老总王建宙吗&#xff1f;” “不认识。” “你认识富士康老板郭台铭吗&#xff1f;” “我认识他&#xff0c;他不认识我…

C# 11 中的 required members

C# 11 中的 required membersIntro在 C# 11 中引入了一个新的特性 —— Required Members&#xff0c;引入了一个新的 required 关键词&#xff0c;可以用来表示字段或者属性在类型初始化的时候必须要进行初始化&#xff0c;这一特性也进一步的改进了可空引用类型的用法。Sampl…

互联网大佬简史:马云/雷军/罗永浩/刘强东...

燃财经&#xff08;ID:rancaijing&#xff09;原创 作者 | 杜枫 编辑 | 魏佳中国互联网的发展&#xff0c;是一部由大佬撑起的奋斗史&#xff0c;也是一部由大佬主演的打脸史。和传统行业不同&#xff0c;互联网行业日新月异&#xff0c;从业者趋于年轻。马云唱起了摇滚&#x…

Windows 11 新版 22621.575 和 22622.575 推送:照片、URL、文件资源管理器

面向 Beta 频道的 Windows 预览体验成员&#xff0c;微软推送了 Windows 11 预览版 Build 22621.575 和 22622.575。 目前 Beta 频道 Windows 11 预览版分为两组进行测试&#xff0c;通过两组 Windows 预览体验成员的使用数据和反馈&#xff0c;以更好的测试新功能的可靠性。Wi…

linux mysql5.6 安装

2019独角兽企业重金招聘Python工程师标准>>> 1、gcc yum install gcc gcc-c ncurses-devel perl 2、cmake安装 wget http://www.cmake.org/files/v2.8/cmake-2.8.10.2.tar.gz tar -xzvf cmake-2.8.10.2.tar.gz cd cmake-2.8.10.2 ./bootstrap ; make ; make insta…

Python常用的12个GUI框架

Graphical User Interface&#xff0c;简称 GUI&#xff0c;又称图形化用户接口&#xff0c;所谓的GUI编程&#xff0c;指的是用户不需要输入代码指令&#xff0c;只通过图形界面的交互就可以操作软件功能。 1.Tkinter 一个轻量级的跨平台图形用户界面&#xff08;GUI&#xff…

PHP下操作Linux消息队列完成进程间通信的方法

2019独角兽企业重金招聘Python工程师标准>>> 来源:http://www.jb51.net/article/24353.htm 关于Linux系统进程通信的概念及实现可查看&#xff1a;http://www.ibm.com/developerworks/cn/linux/l-ipc/   关于Linux系统消息队列的概念及实现可查看&#xff1a;htt…

.NET 7 发布的最后一个预览版Preview 7, 下个月发布RC

微软在2022年8月9日 发布了.NET 7 Preview 7[1]&#xff0c;这是它在11月10日 RTM 之前进入发布候选阶段之前的最后预览版。预览版 7 已在 Visual Studio 17.4 预览版 1 中进行了测试&#xff0c;该预览版也于也与 VS 2022 v17.3 版本一起发布。对于预览版7&#xff0c;开发团队…

2022年全球职业教育行业发展报告

职业教育丨研究报告 核心摘要&#xff1a; 职业教育是职业学校教育与职业培训组成的有机整体&#xff0c;行业参与者除教育培训机构与受训学生外&#xff0c;还涉及企业雇主、行业协会、政府等多方&#xff0c;各群体共同构成密不可分的产业生态。 宏观而言&#xff0c;职业…

实战Cacti网络监控(1)——基础安装配置

实验环境&#xff1a; 物理主机 redhat7.0 内核版本 3.10.0-123.el7.x86_64 虚拟机 redhat6.5 内核版本 2.6.32-431.el6.x86_64 server10.example.com 172.25.254.10 所需软件包&#xff1a; cacti-0.8.8h.tar.g…

《ASP.NET Core 6框架揭秘》实例演示[13]:日志的基本编程模式

《ASP.NET Core 6框架揭秘实例演示[11]&#xff1a;诊断跟踪的几种基本编程方式》介绍了四种常用的诊断日志框架。其实除了微软提供的这些日志框架&#xff0c;还有很多第三方日志框架可供我们选择&#xff0c;比如Log4Net、NLog和Serilog 等。虽然这些框架大都采用类似的设计&…

Caffine Cache 及在SpringBoot中的使用

这一篇我们将要谈到一个新的本地缓存框架&#xff1a;Caffeine Cache。它也是站在巨人的肩膀上-Guava Cache&#xff0c;借着他的思想优化了算法发展而来。 本篇博文主要介绍Caffine Cache 的使用方式&#xff0c;以及Caffine Cache在SpringBoot中的使用。 1. Caffine Cache 在…

C#深入.NET平台的软件系统分层开发

今天我们来讲讲分层开发&#xff0c;你从标题能不能简单的认识一下什么是分层呢&#xff1f; 不懂也没关系&#xff0c;接下来我来给你讲讲。 第一章 软件系统的分层开发 &#xff08;1&#xff09;其实分层模式可以这样定义&#xff1a;将解决方案中功能不同的模块分到不同的项…