集合框架(一)List系列集合

news2024/11/16 17:56:00

 特点

        有序,可重复,有索引。

02d87ad37f864636a5e0731d0ca78076.pngLIst集合的特有方法

4eec8ad25a274411b4fcf3fd99bb1e36.png


/*
 * 目标:掌握List系列集合的特点,以及其提供的特有方法
 * */

import java.util.ArrayList;
import java.util.List;

public class ListTest1 {
    public static void main(String[] args) {
        //1.创建一个ArrayList集合对象(有序、可重复、有索引)
        List<String> list = new ArrayList<>(); //经典代码,将来ArrayList是用的最多的 是一种多态的写法
        //List是一个接口肯定不能new一个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,"紫霞仙子");
        list.add(4,"铁扇公主");
        System.out.println(list);
        //3.public E remove(int index):根据索引删除元素,返回被删除元素
        System.out.println(list.remove(5));
        System.out.println(list);
        //4.public E get(int index): 返回集合中指定位置的元素。
        System.out.println(list.get(2));
        System.out.println(list);
        //5.public E set(int index,E element):修改案引位置处的元系,修改成功后,会返回原来的数据
        System.out.println(list.set(3, "牛魔王"));
        System.out.println(list);

    }
}

List集合支持的遍历方法

  1. for循环(因为List集合有索引)
  2. 迭代器
  3. 增强for循环
  4. Lambda表达式



import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class ListTest {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("糖宝");
        list.add("蜘蛛精");
        list.add("至尊宝");


        //1.for循环
        for (int i = 0; i < list.size(); i++) {
            //i = 0 ,1 ,2
            String s = list.get(i);
            System.out.println(s);
        }
        System.out.println("-----------------------------------");
        //2.迭代器
        Iterator<String> it = list.iterator();//list调用iterator方法,会获得一个迭代器对象
        while (it.hasNext()) {
            System.out.println(it.next());
        }
        System.out.println("-----------------------------------");
        //3.增强for(foreach遍历 不是forEach方法)
        for (String s : list) {
            //会依次让s变量等于第一个、第二个、第三个数据
            System.out.println(s);
        }
        System.out.println("-----------------------------------");
        //4.JDK 1.8 开始之后的Lambda表达式
        list.forEach(s -> {
            System.out.println(s);
        });

    }
}

ffad756892354f308fa78b29a06d3efb.png

ArrayList集合的底层原理

1.底层原理

基于数组实现的

数组:是连续区域,并且会把这一块连续区域分割成若干的相等的小区域,每块区域都有自己的索引,每块区域都是装自己的数据的。

47c0b76a53744be89cd78b382f966092.png

 0419b1067db547cbb0d31591f0562961.png

2.适合的应用场景

0b1e0813c75d44eabeb8cdd620ea98a6.png

LinkedList集合的底层原理

是基于双链表实现的

什么是链表?有什么特点?

链表就是由一个一个的结点组成的,结点在内存中不是连续存储的,和数组不一样;链表的数据是分散存储的,链表的每个结点除了会包含数据值之外还会包含下一个结点的地址信息,通过这个地址信息是可以找到下一个结点的。

90fce4e7638b450d934f06a44c93097e.png 33be21a4a2e741b996a60dd1c0fb1063.pngc8c26ff4618d4b8f881e8482f56a855a.png

 应用场景:

(1)可以用来设计队列(先进先出,后进后出):只是在首尾增删元素,用LinkedList来实现很合适。 

(2)可以用来设计栈(后进先出,先进后出):只是在首增删元素,用LinkedList来实现很合适。 



import java.util.LinkedList;

public class LinkedListTest {
    public static void main(String[] args) {
        //1.创建一个队列
        LinkedList<String> queue = new LinkedList<>();//LinkedList集合就当作队列来看待
        //这里就不要用多态写代码了List没有首尾操作的特有方法是LinkedList基于双链表特有的方法
        queue.addLast("第一");
        queue.addLast("第二");
        queue.addLast("第三");
        queue.addLast("第四");
        System.out.println(queue);
        //出队
        System.out.println(queue.removeFirst());
        System.out.println(queue.removeFirst());
        System.out.println(queue.removeFirst());
        System.out.println(queue);
        System.out.println("-------------------------------------------");
        //2.创建一个栈对象
        LinkedList<String> stack = new LinkedList<>();//同理,这里不要用多态
        //进栈(push)
        /*stack.addFirst("第一颗子弹");
        stack.addFirst("第二颗子弹");
        stack.addFirst("第三颗子弹");
        stack.addFirst("第四颗子弹");
        stack.addFirst("第五颗子弹");*/
        stack.push("第一颗子弹");
        stack.push("第二颗子弹");
        stack.push("第三颗子弹");
        stack.push("第四颗子弹");
        stack.push("第五颗子弹");//push的底层就是addFirst
        System.out.println(stack);
        //出栈(pop)
        System.out.println(stack.removeFirst());
        System.out.println(stack.pop());//同理pop底层也就是removeFirst
        System.out.println(stack);


    }
}

 

 

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

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

相关文章

第十篇 - 如何利用人工智能技术做好营销流量整形管理?(Traffic Shaping)- 我为什么要翻译介绍美国人工智能科技巨头IAB公司

IAB平台&#xff0c;使命和功能 IAB成立于1996年&#xff0c;总部位于纽约市​​​​​​​。 作为美国的人工智能科技巨头社会媒体和营销专业平台公司&#xff0c;互动广告局&#xff08;IAB- the Interactive Advertising Bureau&#xff09;自1996年成立以来&#xff0c;先…

CorelDRAW2024最新版本号25.0.0.230安装包下载

CorelDRAW2024是一款专业的平面设计软件&#xff0c;以矢量图形编辑与排版为核心功能。它凭借对高级操作系统的支持、多监视器查看和4K显示屏的兼容性&#xff0c;使得无论是初始用户还是图形专家&#xff0c;都能自信快速地交付专业级结果。 CorelDRAW 2024的主要特点包括其直…

人工智能|机器学习——k-近邻算法(KNN分类算法)

1.简介 k-最近邻算法&#xff0c;也称为 kNN 或 k-NN&#xff0c;是一种非参数、有监督的学习分类器&#xff0c;它使用邻近度对单个数据点的分组进行分类或预测。虽然它可以用于回归问题&#xff0c;但它通常用作分类算法&#xff0c;假设可以在彼此附近找到相似点。 对于分类…

小程序学习

一、第一天 1、小程序体验 2、注册账号 小程序 (qq.com) 3、开发工具下载 下载 / 稳定版更新日志 (qq.com) 4、目录结构 "navigationBarBackgroundColor": "#00b26a" 配置头部背景色 4、wxml模板介绍 5、wxss 6、js文件 7、宿主环境 1、通信主体 2…

开发知识点-Apache Struts2框架

Apache Struts2 介绍S2-001S2CVE-2023-22530 介绍 Apache Struts2是一个基于MVC&#xff08;模型-视图-控制器&#xff09;设计模式的Web应用程序框架&#xff0c;它是Apache旗下的一个开源项目&#xff0c;并且是Struts1的下一代产品。Struts2是在Struts1和WebWork的技术基础…

el-table-column嵌套el-form-item不能进行校验问题解决

项目为vue3elementPlus开发的项目 业务要求&#xff1a;table表格展示数据&#xff0c;其中有一行是ip地址可展示可修改&#xff0c;此处要求增加自定义校验规则 先看一下效果&#xff1a; 此处先描述一下&#xff0c;问题出在了哪里&#xff0c;我将el-table的data,使用一个…

IO调度器详解

一、调度器演进 1.1 什么是IO调度器&#xff1f; 传统的磁盘因为有磁头&#xff0c;磁头移动有开销。最早的调度器会对访问磁盘的IO做基于磁盘访问位置的排序和合并&#xff0c; 让磁头以最少的移动来完成最大的IO量&#xff0c; 以提升系统IO带宽。 现在的SSD&#xff0c; 物理…

201909青少年软件编程(Scratch)等级考试试卷(三级)

青少年软件编程&#xff08;Scratch&#xff09;等级考试试卷&#xff08;三级&#xff09;2019年9月 第1题&#xff1a;【 单选题】 执行下面的脚本后&#xff0c;变量“分数”的值是多少&#xff1f;&#xff08;&#xff09; A:5 B:6 C:10 D:25 【正确答案】: C 【试题…

NASA数据集——GOES-16卫星的高级图像和地球观测数据

简介 GHRSST NOAA/STAR GOES-16 ABI L2P America Region SST v2.70 dataset in GDS2 ABI_G16-STAR-L2P-v2.70是美国国家航空航天局&#xff08;NASA&#xff09;的一种卫星数据处理产品。这个产品是由GOES-16&#xff08;也称为GOES-East&#xff09;卫星的先进基线/全球地球…

无法设置查询条件,应该如何解决?

使用易查分制作查询系统时&#xff0c;无法正常设置查询条件&#xff0c;应如何解决&#xff1f; &#x1f4cc;问题解决方法 01表格第一行是标题 如果上传的表格&#xff0c;第1行内容是标题而非表头&#xff0c;则易查分系统将无法识别查询条件&#xff0c;需要重新上传第1行…

Spring Cloud微服务在Windows本地开发时禁用Nacos注册中心注册

码到三十五 &#xff1a; 个人主页 心中有诗画&#xff0c;指尖舞代码&#xff0c;目光览世界&#xff0c;步履越千山&#xff0c;人间尽值得 ! 本文将介绍如何在Spring Cloud微服务架构中&#xff0c;实现在Windows本地开发环境下禁用服务自动注册到Nacos注册中心&#xff0…

有点NB的免费wordpress主题模板

一个不错的黄色模板&#xff0c;用WP免费主题模板搭建家政服务公司网站。 https://www.wpniu.com/themes/15.html

【npm】前端工程项目配置文件package.json详解

简言 详细介绍了package.json中每个字段的作用。 package.json 本文档将为您介绍 package.json 文件的所有要求。它必须是实际的 JSON&#xff0c;而不仅仅是 JavaScript 对象文字。 如果你要发布你的项目&#xff0c;这是一个特别重要的文件&#xff0c;其中name和version是…

智能音箱技术解析

目录 前言智能音箱执行步骤解析1.1 探测唤醒词或触发词1.2 语音识别1.3 意图识别1.4 执行指令 2 典型的智能音箱2.1 百度小度音响2.2 小米小爱同学2.3 苹果 HomePod 3 功能应用举例3.1 设置计时器3.2 播放音乐 结语 前言 智能音箱已经成为日常生活中不可或缺的一部分&#xff…

(七)数据库的安全性

7.1存取控制 7.1.1自主存取控制DAC 7.1.2强制存取控制MAC 7.2审计 其他安全性保护

【字符串】【分类讨论】【KMP】1163. 按字典序排在最后的子串

作者推荐 视频算法专题 本文涉及知识点 字符串 字典序 分类讨论 本题无法使用KMP&#xff0c;因为t1不段变化。 LeetCode1163. 按字典序排在最后的子串 给你一个字符串 s &#xff0c;找出它的所有子串并按字典序排列&#xff0c;返回排在最后的那个子串。 示例 1&#xf…

关于华为昇腾(Ascend)AI芯片,CANN计算架构,MindSpore深度学习框架,MindStudio开发工具

1、华为昇腾生态 深度学习之前的配置都是&#xff1a;NVIDIA GPU / CPU CUDA Tensorflow/PyTorch 后来老美禁止 NVIDIA 卖GPU芯片给我们&#xff0c;于是国内企业开始发力CPU和GPU硬件&#xff0c;成果丰硕&#xff0c;虽然与NVIDIA顶级GPU还有一些差距&#xff0c;但是也不…

网络故障基本判断方法

1&#xff09;电脑上使用winR键&#xff0c;打开运行窗口&#xff0c;输入CMD命令&#xff0c;点击回车键 2&#xff09;在弹出的CMD运行窗口中输入ipconfig命令 通过该命令可以查看本机的IP地址&#xff0c;子网掩码和网关等信息。确认电脑中所有网卡配置是否正确。 3&…

有点炫酷有点diao的免费wordpress模板主题

这是一款经典的免费wordpress主题&#xff0c;被广泛应用于多个行业的网站。 https://www.wpniu.com/themes/189.html

【linux】04 :linix实用操作

1.常用快捷键 ctrlc表示强制停止。linux某些程序的运行&#xff0c;如果想强制停止&#xff0c;可以使用&#xff1b;命令输入错误&#xff0c;也可以通过ctrlc,退出当前输入&#xff0c;重新输入。 ctrld表示退出登录&#xff0c;比如退出root以回到普通用户&#xff0c;或者…