重学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));}}
}

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

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

相关文章

计算机视觉可视化工具SIBR使用方法

最近在跑实验时需要可视化3DGS/2DGS的重建后的图形界面&#xff0c;所以需要一个可视化工具&#xff0c;需要的软硬件要求如下&#xff1a; Hardware Requirements OpenGL 4.5-ready GPU and drivers (or latest MESA software)4 GB VRAM recommendedCUDA-ready GPU with Comp…

常见SSL证书品牌关系图

常见SSL证书品牌关系图 在SSL证书市场上&#xff0c;有几个主要的品牌和他们之间的复杂关系。以下是一些主要的SSL证书提供商及其关系的简要概述&#xff1a; DigiCert&#xff1a; DigiCert 是最大的SSL证书颁发机构之一。它收购了Symantec的SSL和PKI业务&#xff0c;其中包括…

深度合作!博睿数据联合中国信通院开展公网服务质量评估工作!

近日&#xff0c;中国信息通信研究院&#xff08;简称“中国信通院”&#xff09;算网质量保障工作全面启动&#xff0c;博睿数据&#xff08;bonree.com&#xff0c;股票代码688229&#xff09;作为信通院算网质量测试独家技术支持单位&#xff0c;提供公网服务质量测评整体解…

Linux之多进程

文章目录 c程序获取进程pid和ppid进程相关命令进程的创建多进程进程退出exit()函数_exit函数 进程的等待wait函数waitpid函数 进程的替换进程间的通信一、无名管道二、有名管道三、信号kill函数raise函数pause() 函数自定义信号处理函数SIGALARM信号子进程退出信号SIGCHLD 四、…

算法刷题day55:搜索(二)

目录 引言一、迷宫二、红与黑三、马走日四、单词接龙五、分成互质组六、小猫爬山七、数独八、木棒九、加成序列十、排书 引言 上篇文章主要是讲 B F S BFS BFS 的&#xff0c;主要应用在搜索中找最短路方面&#xff0c;主要就是在内部搜索&#xff0c;和整体搜索。而 D F S …

基于mybatis-plus的多语言扩展

概览 对于表中字段&#xff0c;需要实现多语言的方案探讨&#xff1a; 1.表中横向扩展多个字段分别存储中文&#xff0c;英文&#xff0c;俄语等语言字段&#xff0c;查询时&#xff0c;根据需要查询的语言&#xff0c;进行查询 2.增加一张多语言表&#xff0c;存储多语言信…

IC开发——VCS基本用法

1. 简介 VCS是编译型verilog仿真器&#xff0c;处理verilog的源码过程如下&#xff1a; VCS先将verilog/systemverilog文件转化为C文件&#xff0c;在linux下编译链接生成可执行文件&#xff0c;在linux下运行simv即可得到仿真结果。 VCS使用步骤&#xff0c;先编译verilog源…

深入理解Java中的ThreadLocal机制:原理、方法与使用场景解析

深入理解Java中的ThreadLocal机制&#xff1a;原理、方法与使用场景解析 ThreadLocal 是 Java 中提供的一种机制&#xff0c;用于在多线程环境下为每个线程提供独立变量副本&#xff0c;避免了线程间共享变量引发的并发问题。通过 ThreadLocal&#xff0c;每个线程都可以拥有自…

js面试题----3

61.new的原理是什么?通过new的方式创建对象和通过字面量创建有什么区别? new: 创建一个新对象。这个新对象会被执行[[原型]]连接。将构造函数的作用域赋值给新对象,即this指向这个新对象.如果函数没有返回其他对象,那么new表达式中的函数调用会自动返回这个新对象。functio…

Nuxt2 控制路由导航方式

控制路由导航 1 在插件中使用 beforeEach 守卫 首先&#xff0c;创建一个插件文件&#xff0c;例如 router.js&#xff1a; export default ({ app, store }) > {app.router.beforeEach((to, from, next) > {if (to?.fullPath /buy/ && from?.fullPath /p…

STM32--ADC

一、简介 *ADC&#xff08;Analog-Digital Converter&#xff09;模拟-数字转换器 *ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量&#xff0c;建立模拟电路到数字电路的桥梁 *12位逐次逼近型ADC&#xff0c;1us转换时间 *输入电压范围&#xff1a;0~3.3V&…

cv2.imdecode 和 cv2.imread 的区别

cv2.imdecode 和 cv2.imread 都是 OpenCV 用于读取图像的函数&#xff0c;但它们用于不同的场景&#xff0c;处理方式也不同。 cv2.imread 用法&#xff1a; img cv2.imread(image_path)功能&#xff1a; cv2.imread 用于直接从文件系统中读取图像文件。image_path 是图像文件…

做人脸识别系统,使用python什么个库?

在构建人脸识别系统时&#xff0c;选择合适的库至关重要。下面列出几种流行且功能强大的库&#xff0c;并根据不同需求和场景推荐使用&#xff1a; 1. FaceNet FaceNet 是谷歌开发的高性能人脸识别模型&#xff0c;具有很高的准确性和广泛的应用。 优点&#xff1a; 高精度的…

Flutter 中的 FractionallySizedBox 小部件:全面指南

Flutter 中的 FractionallySizedBox 小部件&#xff1a;全面指南 Flutter 的布局系统非常灵活&#xff0c;允许开发者以各种方式对组件进行尺寸调整。FractionallySizedBox 是 Flutter 中一个非常有用的布局小部件&#xff0c;它允许子组件的尺寸基于父组件的尺寸来计算。本文…

【备忘】Adobe XD提供了一系列的快捷键来帮助设计师们提高工作效率。以下是一些常用的Adobe XD快捷键及其用途:

Adobe XD提供了一系列的快捷键来帮助设计师们提高工作效率。以下是一些常用的Adobe XD快捷键及其用途&#xff1a;### Adobe XD 快捷键列表&#xff1a;#### 基本选择与编辑 - **V** - 选择工具&#xff0c;用于选择和移动元素。 - **A** - 直接选择工具&#xff0c;用于选择和…

redisson 释放分布式锁 踩坑

java.lang.IllegalMonitorStateException: attempt to unlock lock, not locked by current thread by node id: 48c213c9-1945-4c1b-821e-6d32e347eb44 thread-id: 69 出错代码&#xff1a; private void insertHourLog(Timestamp lastHourStartTimeStamp) {RLock lock red…

2024上半年软考高级系统架构设计师回顾

本博客地址&#xff1a;https://security.blog.csdn.net/article/details/139238685 2024年上半年软考在5月25-26日举行&#xff0c;趁着时间刚过去记忆还在&#xff0c;简单写一点总结。 关于考试形式&#xff1a;上机考试&#xff08;以后也都是机考&#xff09;&#xff0…

leetcode 1241每个帖子的评论数(postgresql)

需求 编写 SQL 语句以查找每个帖子的评论数。 结果表应包含帖子的 post_id 和对应的评论数 number_of_comments 并且按 post_id 升序排列。 Submissions 可能包含重复的评论。您应该计算每个帖子的唯一评论数。 Submissions 可能包含重复的帖子。您应该将它们视为一个帖子。…

BI工具如何为金融行业带来变革?金融行业营销管理策略大揭秘

当今数字化时代&#xff0c;金融行业正经历着前所未有的变革。随着大数据、人工智能、区块链等新兴技术的兴起&#xff0c;金融机构正面临着重新定义服务模式、风险管理和客户体验的挑战。商业智能&#xff08;BI&#xff09;作为这一变革的关键驱动力&#xff0c;已经成为金融…

ComfyUI工作流网站

https://openart.ai/home https://comfyworkflows.com/ https://civitai.com/