当前位置: 首页 > news >正文

重学java 49 List接口

但逢良辰,顺颂时宜

                           —— 24.5.28

一、List接口

1.概述:

        是collection接口的子接口

2.常见的实现类:

        ArrayList LinkedList Vector

二、List集合下的实现类

1.ArrayList集合的使用及源码分析

        1.概述

                ArrayList是List接口的实现类

        2.特点

                a.元素有序 —> 按照什么顺序存的,就按照什么顺序取
                b.元素可重复
                c.有索引 —> 可以利用索引去操作元素
                d.线程不安全

        3.数据结构:数组

        4.常用方法

                boolean add(E e) —> 将元素添加到集合中 —> 尾部(add方法一定能添加成功的,所以我们不用boolean接收返回值)
                void add(int index,E element) —> 在指定索引位置上添加元素

                boolean remove(Object o) —> 删除指定的元素,删除成功为true,失败为false

                E remove(int index) —> 删除指定索引位置上的元素,返回的是被删除的元素        

                E set(int index,E element) > 将指定索引位置上的元素,修改成后面的element元素

                E get(int index) > 根据索引获取元素
                int size() > 获取集合元素个数

        5.示例

package S83SetFrame;import java.util.ArrayList;public class Demo226List {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();// boolean add(E e)->将元素添加到集合中->尾部(add方法一定能添加成功的,所以我们不用boolean接收返回值)list.add("一切都会好的");list.add("我一直相信");list.add("万事胜意");System.out.println(list);   // [一切都会好的, 我一直相信, 万事胜意]// void add(int index,E element)->在指定索引位置上添加元素list.add(2,"苦难是花开的伏笔");System.out.println(list);   // [一切都会好的, 我一直相信, 苦难是花开的伏笔, 万事胜意]// boolean remove(0bject o)->删除指定的元素,删除成功为true,失败为falselist.remove("苦难是花开的伏笔");System.out.println(list);   // [一切都会好的, 我一直相信, 万事胜意]// E remove(int index)->删除指定索引位置上的元素,返回的是被删除的那个元素String res = list.remove(2);System.out.println(res);    // 万事胜意System.out.println(list);   // [一切都会好的, 我一直相信]// E set(int index,E element)->将指定索引位置上的元素,修改成后面的element元素String res1 = "会好 迟早";list.set(0,res1);System.out.println(list);   // [会好 迟早, 我一直相信]// E get(int index)->根据索引获取元素String res2 = list.get(1);System.out.println(res2);   // 我一直相信// int size()->获取集合元素个数int size = list.size();System.out.println(list.size());    // 2System.out.println(size);   // 2}
}

List集合的遍历:

package S83SetFrame;import java.util.ArrayList;
import java.util.Iterator;public class Demo227ListForeach {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();// boolean add(E e)->将元素添加到集合中->尾部(add方法一定能添加成功的,所以我们不用boolean接收返回值)list.add("一切都会好的");list.add("我一直相信");list.add("万事胜意");// 遍历方式1:Iterator<String> iterator = list.iterator();while (iterator.hasNext()){System.out.println(iterator.next());}// 遍历方式2: 快捷键: 集合名.forifor (int i = 0; i < list.size(); i++) {System.out.println(list.get(i));}}
}

列表元素是整数型的删除

需求:删除2
remove(object o)->直接删除指定元素
remove(int index)->删除指定索引位置上的元素
如果remove中直接传递整数,默认调用按照指定索引删除元素的remove但是此时1ist中没有2索引,所以越界
解决:我们可以将2包装成包装类,变成包装类之后,其父类就是object
package S83SetFrame;import java.util.ArrayList;public class Demo228ListDeleteInt {public static void main(String[] args) {ArrayList<Integer> list = new ArrayList<Integer>();list.add(2);
//         需求:删除2
//         remove(object o)->直接删除指定元素
//         remove(int index)->删除指定索引位置上的元素
//         如果remove中直接传递整数,默认调用按照指定索引删除元素的remove但是此时1ist中没有2索引,所以越界
//         解决:我们可以将2包装成包装类,变成包装类之后,其父类就是object了list.remove(new Integer(2));System.out.println(list);}
}

6.ArrayList构造方法:

        a.ArrayList()        构造一个初始容量为十的空列表

        b.ArrayList(int initialcapacity)        构造具有指定初始容量的空列表

7.ArrayList源码总结:

        a.不是一new底层就会创建初始容量为10的空列表,而是第一次add的时候才会创建初始化容量为10的空列表

        b.ArrayList底层是数组,那么为啥还说集合长度可变呢?

                ArrayList底层会自动扩容 —> Arrays.copyof
        c.扩容多少倍?
                1.5倍

2.LinkedList集合的使用及源码分析

        1.概述

                LinkedList是List接口的实现类

        2.特点

                a.元素有序
                b.元素可重复
                c.有索引 —> 这里说的有索引仅仅指有操作索引的方法,不代表本质上具有索引
                d.线程不安全

        3.数据结构

                双向链表

        4.方法

                public void addFirst(E e):将指定元素插入此列表的开头。
                public void addLast(E e):将指定元素添加到此列表的结尾。
                public E getFirst():返回此列表的第一个元素。
                public E getLast():返回此列表的最后一个元素。
                public E removeFirst():移除并返回此列表的第一个元素。
                public E removeLast():移除并返回此列表的最后一个元素。
                public E pop():从此列表所表示的堆栈处弹出一个元素。
                public void push(E e):将元素推入此列表所表示的堆栈。
                public boolean isEmpty():如果列表没有元素,则返回true。

        5.示例

package S83SetFrame;import java.util.LinkedList;public class Demo229LinkedList {public static void main(String[] args) {LinkedList<String> linkedList = new LinkedList<>();linkedList.add("A");linkedList.add("B");linkedList.add("C");linkedList.add("D");linkedList.add("E");System.out.println(linkedList);//        public void addFirst(E e):将指定元素插入此列表的开头。linkedList.addFirst("F");linkedList.addFirst("G");System.out.println(linkedList);System.out.println("————————————————————————————————————");//        public void addLast(E e):将指定元素添加到此列表的结尾。linkedList.addLast("H");linkedList.addLast("I");linkedList.addLast("J");System.out.println(linkedList);System.out.println("————————————————————————————————————");//        public E getFirst():返此列表的第一个元素。System.out.println(linkedList);System.out.println(linkedList.getFirst());System.out.println("————————————————————————————————————");//        public E getLast():返回此列表的最后一个元素。System.out.println(linkedList);System.out.println(linkedList.getLast());System.out.println("————————————————————————————————————");//        public E removeFirst():移除并返回此列表的第一个元素。String ele = linkedList.removeFirst();System.out.println(ele);System.out.println(linkedList);System.out.println("————————————————————————————————————");//        public E removeLast():移除并返回此列表的最后一个元素。String ele2 = linkedList.removeLast();System.out.println(ele2);System.out.println(linkedList);System.out.println("————————————————————————————————————");//        public E pop():从此列表所表示的堆栈处弹出一个元素。System.out.println(linkedList.pop());System.out.println(linkedList);System.out.println("————————————————————————————————————");//        public void push(E e):将元素推入此列表所表示的堆栈。linkedList.push("K");System.out.println(linkedList);System.out.println("————————————————————————————————————");//        public boolean isEmpty():如果列表没有元素,则返回true.System.out.println(linkedList.isEmpty());}
}

linkedList的遍历

package S83SetFrame;import java.util.Iterator;
import java.util.LinkedList;public class Demo230LinkedListForeach {public static void main(String[] args) {LinkedList<String> linkedList = new LinkedList<>();linkedList.add("A");linkedList.add("B");linkedList.add("C");linkedList.add("D");linkedList.add("E");System.out.println(linkedList);// 遍历Iterator<String> iterator = linkedList.iterator();while (iterator.hasNext()) {System.out.println(iterator.next());}// 根据索引遍历for (int i = 0; i < linkedList.size(); i++) {System.out.println(linkedList.get(i));}}
}

相关文章:

重学java 49 List接口

但逢良辰&#xff0c;顺颂时宜 —— 24.5.28 一、List接口 1.概述: 是collection接口的子接口 2.常见的实现类: ArrayList LinkedList Vector 二、List集合下的实现类 1.ArrayList集合的使用及源码分析 1.概述 ArrayList是List接口的实现类 2.特点 a.元素有序 —> 按照什么顺…...

【html+css(大作业)】二级菜单导航栏

目录 实现效果 代码及其解释 html部分 CSS部分 hello&#xff0c;hello好久不见&#xff01; 今天我们来写二级导航栏&#xff0c;所谓二级导航栏&#xff0c;简单来说就是鼠标放上去就有菜单拉出&#xff1a; 实现效果 代码及其解释 html部分 <!DOCTYPE html> &l…...

算法基础之集合-Nim游戏

集合-Nim游戏 核心思想&#xff1a; 博弈论 sg函数&#xff1a;在有向图游戏中,对于每个节点x,设从x出发共有k条有向边,分别到达节点y1,y2,yk,定义SG(x)的后记节点y1,y2,,yk的SG函数值构成的集合在执行mex运算的结果,即:SG(x)mex({SG(y1),SG(y2)SG(yk)}) **特别地,**整个有向图…...

Diffusion Model, Stable Diffusion, Stable Diffusion XL 详解

文章目录 Diffusion Model生成模型DDPM概述向前扩散过程前向扩散的逐步过程前向扩散的整体过程 反向去噪过程网络结构训练和推理过程训练过程推理过程优化目标 详细数学推导数学基础向前扩散过程反向去噪过程 Stable Diffusion组成结构运行流程网络结构变分自编码器 (VAE)文本编…...

智能奶柜:重塑牛奶零售新篇章

智能奶柜&#xff1a;重塑牛奶零售新篇章 回忆往昔&#xff0c;孩童时代对送奶员每日拜访的期待&#xff0c;那熟悉的一幕——新鲜牛奶被细心放置于家门口的奶箱中&#xff0c;成为了许多人温馨的童年记忆。如今&#xff0c;尽管直接投递袋装牛奶的情景已不多见&#xff0c;但…...

源代码防泄密--沙盒技术安全风险分析

将原本用于防护病毒木马的沙盒&#xff08;沙箱&#xff09;技术&#xff0c;运用于源代码防泄密领域&#xff0c;形成沙盒防泄密系统&#xff0c;是否安全可行&#xff1f;依据沙盒防泄密基本工作原理&#xff0c;可从安全模型、沙箱逃逸以及与进程相关性等多个角度&#xff0…...

韭菜收割项目

最近在玩股票&#xff0c;被人当成韭菜收割了一顿。高点追涨&#xff0c;第二天直接跌停。以为是低点&#xff0c;想抄底&#xff0c;结果别人直接抄家&#xff0c;血亏!!! 作为一个程序员&#xff0c;还是好好敲代码赚钱好了&#xff0c;一步一步。想不劳而获是不可能的。 我写…...

Unity3D输入事件

文章目录 前言一、全局事件二、射线三、点选3D模型四、点击地面控制人物移动总结 前言 Unity输入事件分为两类&#xff0c;全局触发和监听式触发。全局触发通常是运行在update在每帧进行检测&#xff0c;而监听式触发是被动的输入事件。 一、全局事件 在最新的unity中有新和旧…...

c++ thread detach

#include <thread> #include <iostream>using namespace std;void func() {cout << "子线程func开始执行&#xff01;" << endl;//do somethingcout << "子线程func执行结束&#xff01;" << endl; }int main() {cout…...

入门四认识HTML

目录 一、HTML介绍 1、Web前端三大核心技术 2、什么是HTML 3、Html标签 4、标签属性 二、HTML骨架标签 三、编写HTML工具 四、常用标签 1、注释 2、标题标签 3、段落标签 4、超链接标签 5、图片标签 6、换行与空格 7、布局标签 8、列表标签 9、表单…...

js怎么生成验证码?js生成指定长度的随机字符串

在项目中经常有生成随机字符串的需求&#xff0c;比如验证接口签名、验证码(Node.js发送短信或邮箱验证码、生成图片验证码)&#xff0c;我们可以使用Javascript生成随机字符。 使用随机数从给出的可能字符中抽取合并字符串 优点是可以自定义结果中字符的取值&#xff0c;比如…...

Python魔法之旅-魔法方法(01)

目录 一、概述 1、定义 2、作用 二、主要应用场景 1、构造和析构 2、操作符重载 3、字符串和表示 4、容器管理 5、可调用对象 6、上下文管理 7、属性访问和描述符 8、迭代器和生成器 9、数值类型 10、复制和序列化 11、自定义元类行为 12、自定义类行为 13、类…...

介绍下 npm 模块安装机制,为什么输入 npm install 就可以自动安装对应的模块

npm&#xff08;Node Package Manager&#xff09;模块安装机制是Node.js生态系统中非常重要的一部分&#xff0c;它允许开发者轻松管理和安装Node.js项目的依赖项。下面我将详细介绍npm模块的安装机制&#xff0c;以及为什么输入npm install就可以自动安装对应的模块。 npm模…...

vue2如何父组件 对象 双向绑定子组件

对于Vue 2&#xff0c;你不能直接用v-model绑定对象&#xff0c;但可以通过在子组件内部处理value prop的变化并触发input事件来模拟这一行为。 父组件A 1<template> 2 <ComponentB v-model"item" prop-names"addressId,date,startTime,endTime&quo…...

[Android]在后台线程执行耗时操作,然后在主线程更新UI

1.Coroutines&#xff08;官方推荐&#xff09; Coroutines 提供了一种轻量级的线程管理方式&#xff0c;使得在后台线程执行任务和在主线程更新 UI 变得简单。以下是如何在 Kotlin 中使用 Coroutines 来处理耗时逻辑并更新 UI 的步骤&#xff1a; 添加 Coroutines 依赖: 首…...

平方回文数-第13届蓝桥杯选拔赛Python真题精选

[导读]&#xff1a;超平老师的Scratch蓝桥杯真题解读系列在推出之后&#xff0c;受到了广大老师和家长的好评&#xff0c;非常感谢各位的认可和厚爱。作为回馈&#xff0c;超平老师计划推出《Python蓝桥杯真题解析100讲》&#xff0c;这是解读系列的第73讲。 平方回文数&#…...

位置编码(三) 2D旋转位置编码

Rotary Position Embedding for Vision Transformer https://arxiv.org/abs/2403.13298 Transformer升级之路&#xff1a;4、二维位置的旋转式位置编码 https://kexue.fm/archives/8397 Transformer升级之路&#xff1a;17、多模态位置编码的简单思考 https://kexue.fm/archive…...

1、pikachu靶场之xss钓鱼复现

一、复现过程 1、payload <script src"http://127.0.0.1/pkxss/xfish/fish.php"></script> 将这段代码插入到含有储存xss的网页上&#xff0c;如下留言板 2、此时恶意代码已经存入数据库&#xff0c;并存在网页中&#xff0c;当另一个用户打开这个网页…...

弘君资本炒股技巧:股票定向增发是什么意思?是好是坏?

股票定向增发是指已上市的公司向指定的组织或者个人投资者额外发行股份募集资金的融资方法&#xff0c;发行价格为发行前某一阶段的平均价的必定比例&#xff0c;增发的价格不得低于前二十个买卖日股票均价的80&#xff05;。 例如&#xff0c;个股定增前二十个买卖股票平均价为…...

vue3项目使用pinia状态管理器----通俗易懂

1、首先安装pinia yarn add pinia # 或使用npm npm install pinia 2、在项目的src目录下新建store文件夹&#xff0c;然后store目录下新建index.js / index.ts &#xff1a; 我这里是index,js import { createPinia } from "pinia"// 创建 Pinia 实例 const pinia …...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...