Java_List集合

特点、特有方法

ArrayList : 有序、可重复、有索引。
LinkedList:有序、可重复、有索引。

底层实现不同!适合场景不同!

List 集合的特有方法

List 集合因为支持索引,所以多了很多索引相关的方法,当然,Collection的功能List也都继承了。

方法名称说明
void add(int index, E element)在此集合中指定位置插入指定元素
E remove(int index)删除指定索引处的元素,返回被删除的元素
E set(int index, E element)修改指定索引处的元素,返回被修改的元素
E get(int index)返回指定索引处的元素
    public class ListTest1{
       public static void main(String []args)
       {
          //1、创建一个ArrayList集合对象(有序、可重复、有索引)
        List<String> list = new ArrayList<>();
        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(3));

         //5、public E set(int index,E element) :修改索引位置处的元素,修改成功后,会返回原来的数据
         System.out.println(list.set(3,"牛魔王"));
         System.out.println(list);
       }
    }

1、ArrayList 集合的底层原理

基于数组实现
数组的特点:

  查询速度快注意:是根据索引查询数据快查询数据通过地址值和索引定位,查询任意数据耗时相同。
  删除效率低:可能需要把后面很多的数据进行前移
  添加效率极低:可能需要把后面很多数据后移,再添加元素;或者也可能需要进行数组扩容。
  
     
         1、利用无参构造器创建的集合,会在底层创建一个默认长度为0的数组
          2、添加第一个元素时,底层会创建一个新的长度为10的数组
           3、存满时,会扩容1.5倍
           4、如果一次添加多个元素,1.5倍还放不下,则创建新数组的长度以实际为标准
   List<String> list1 = new ArrayList<>();
   list1.add("a");
   ...
   List<String> list2= new ArrayList<>();
   list2.add("all");
   ...
   list1.addAll(list2); //把集合list2的数据全部倒入到list1集合
   

2、ArrayList集合适合的应用场景

    1、ArrayList适合:根据索引查询数据,比如根据随机索引取数据(高效)!或者数据量不是很大时!
    2、ArrayList不适合:数据量很大的同时,又要频繁进行增删操作!

3、LinkedList集合的底层原理

基于双链表实现的。
1、什么是链表?有什么特点?

单项列表
在这里插入图片描述
链表中的结点是独立对象,再内存中是不连续的,每个结点包含的数据值和下一个结点的地址。

链表的特点1:查询慢,无论查询那个数据都要从头开始找。

链表的特点2:链表的增删相对快

双向列表

在这里插入图片描述

特点:查询慢,增删相对较快,但对首尾元素进行增删改查的速度是极快的。

LinkedList新增了:很多首位操作的特有方法。

方法名称说明
public void addFirst(E e )在该列表开头插入指定的元素
public void addLast(E e )将指定的元素追加到此列表的末尾
public E getFrist()返回此列表中的第一个元素
public E getLast()返回此列表中的最后一个元素
public E removeFirst()从此列表中删除并返回第一个元素
public E remoceLast()从此列表中返回最后一个元素

LinkedList的应用场景之一:可以用来设计队列先进先出,后进后出。

    public class ListTest3
    {
         public static void main(String[] args)
         {
           //1、创建一个队列
           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());
           System.out.println(queue);
           
         }
    }


LinkedList的应用场景之一:可以用来设计栈后进先出

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java多线程核心工具类

1.Thread类&#xff1a;代表一个线程。你可以通过继承Thread类或实现Runnable接口来创建线程。 2.Executor框架&#xff1a;java.util.concurrent.Executors和java.util.concurrent.Executor接口提供了一种创建和管理线程池的方法&#xff0c;可以减少在创建和销毁线程上的开销…

Hive 基本操作

1.启动Hadoop集群 2.将学生信息上传到/bigdata/hive/hive_stu目录下 查看测试数据 3.进入hive,切换到db_test库&#xff08;如没有&#xff0c;可以先创建 create database db_test&#xff09;

webf 开发工具:数据库持久层基础文件生成工具

WZW.SqlMapHelpForJava是运行在.Net Framework4.0上的数据库持久层基础文件生成工具&#xff0c;支持多种关系型数据库的持久层基础文件、Java类的生成以及对配置文件的更新&#xff0c;与webf框架进行紧密配合&#xff0c;减少了数据库持久层基础文件编写工作量&#xff0c;提…

常用运维工具之 WGCLOUD(国产软件)介绍

WGCLOUD是一款免费开源的运维监控软件&#xff0c;轻量高效&#xff0c;部署方便&#xff0c;上手简单&#xff0c;界面简单流畅 WGCLOUD是国产运维软件&#xff0c;可以适配大部分的信创环境&#xff0c;比如麒麟、统信等操作系统 WGCLOUD具体支持监控的操作系统如下&#x…

Qt OPC UA通信

介绍 OPC UA全称Open Platform Unified Architecture&#xff0c;开放平台统一架构&#xff0c;是工业自动化领域通用的数据交换协议&#xff0c;它有两套主要的通信机制&#xff1a;1.客户端-服务器通信&#xff1b;2.发布订阅。Qt对OPC UA通信标准也提供了支持&#xff0c;目…

【前端】微信小程序前端开发通过weixin://wxpay/bizpayurl生成支付二维码

&#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主。公粽号&#xff1a;洲与AI。 &#x1f913; 欢迎大家关注我的专栏&#xff0c;我将分享Web前后端开发、…

2024深圳市福田区幼儿园地图小程序

根据深圳教育2024年福田区幼儿园名单制作了一个简单的幼儿园地图。 数据来源&#xff1a;https://www.szftedu.cn/gk/xxxx/202302/t20230203_143313.html 2024年福田区幼儿园名单&#xff1a;https://www.szftedu.cn/gk/xxxx/202302/P020240402526108008524.pdf 源码&#x…

代理记账公司的五大问题及其解决方案

代理记账公司是现代企业管理中不可或缺的一部分&#xff0c;它为企业的日常运营提供了专业、高效的服务&#xff0c;随着行业的发展和竞争的加剧&#xff0c;代理记账公司的面临的问题也日益突出&#xff0c;这些问题主要表现在以下几个方面&#xff1a; 业务流程不规范 许多代…

腾讯云centos上安装docker

下面的操作是在root用户下操作的,如果非root用户在命令行前加上sudo 1. 系统及内核查看 操作系统&#xff1a;64位的CentOS 7或更新版本。内核版本&#xff1a;最低要求是3.10&#xff0c;推荐使用3.10或更高版本。 #查看内核版本 (base) [klfwjfweaVM-0-6-centos ~]$ uname…

Java-springBoot常用注解讲解

一、Configuration 注解和Bean 注解 Configuration 可以理解为spring xml配置中的<beans>标签,Bean可理解为用spring的时候xml里面的<bean>标签Configuration 注解的是类,Bean 注解域为方法,对象在Spring Boot 5.2之后的Configuration注解多了一个属性proxyBeanMet…

数据结构:一般哈希

数据结构&#xff1a;一般哈希 题目描述参考代码拉链法开放寻址法 题目描述 输入样例 5 I 1 I 2 I 3 Q 2 Q 5输出样例 Yes No参考代码 拉链法 #include <iostream> #include <cstring> using namespace std;const int N 100003;int h[N], e[N], ne[N], idx;vo…

基于PHP+MySQL开发的一套游泳馆预约报名小程序开发源码模板

最近新开发了一套游泳馆线上预约报名小程序&#xff0c;其主要功能有预约功能&#xff0c;报名功能&#xff0c;支付功能&#xff0c;个人中心&#xff0c;订单管理&#xff0c;商品管理等等。 游泳馆预约报名小程序系统-运行环境 开发语言&#xff1a;PHP 数据库&#xff1a;M…

对接专有钉钉(浙政钉)登陆步骤

背景 因为项目需要对接浙政钉&#xff0c;我想应该和之前对接阿里云的钉钉登陆钉钉登陆类似&#xff0c;就上网搜索看看&#xff0c;出现了个专有钉钉的概念&#xff0c;就一时间搞不清楚&#xff0c;钉钉&#xff0c;专有钉钉&#xff0c;浙政钉的区别&#xff0c;后续稍微理…

向阳而生,逐光而行。—定制化系统解决方案—

风之所及&#xff0c;皆有麦浪 目之所及&#xff0c;皆为所向

Precision和Recall

Precision&#xff08;精确率 / 查准率&#xff09;和 Recall&#xff08;召回率 / 查全率&#xff09;是分类任务中常用的两种性能度量&#xff0c;它们用于评估模型在处理二分类或多分类问题时的表现。 Precision&#xff08;精确率&#xff09; 精确率衡量的是模型预测为正…

干货!如何在Jmeter中实现对NCR响应的解析

最近做接口测试时发现了一个问题&#xff0c;部分请求的响应是通过NCR编码实现的&#xff0c;这样就导致了无法对这些请求进行断言&#xff0c;为了解决这个问题进行了如下调研&#xff0c;大家可以参考下面两篇文章&#xff1a; 使用Java apache commons包五分钟搞定NCR解析&…

智慧校园应用平台的全面建设

在当今社会&#xff0c;随着科技的不断进步&#xff0c;智慧校园应用平台逐渐成为学校管理的必备工具。在实现智慧校园全面建设的过程中&#xff0c;学校需要运用先进的技术和创新的理念&#xff0c;为教育提供更好的服务和支持。这篇文章将为您介绍智慧校园应用平台的全面建设…

qt中使用QSLite时发现query.value(0).toInt()未获取数据问题

1、首先确保数据库名没有问题 2、确保正常连接 3、非常重要的一点&#xff1a;query.value(0).toInt()之前&#xff0c;必须要有query.first()&#xff0c;非常重要&#xff0c;缺少了这个会一直查不到

ruoyi-nbcio基于jeecg的flowable前端支持自定义表单组件的自动获取方法

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 http://218.75.87.38:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a; h…

罗德、西圣、猛犸无线麦克风哪个好?罗德、西圣领夹麦克风对比测评

在当今短视频蓬勃发展的时代&#xff0c;越来越多的人投身于短视频创作的浪潮之中&#xff0c;通过镜头捕捉生活点滴&#xff0c;记录工作瞬间。而在谈及视频制作时&#xff0c;不得不提及的是视频录制工具。目前&#xff0c;随着手机影像技术的飞速发展&#xff0c;其视频录制…