重学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.rhkb.cn/news/333876.html

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

相关文章

红外成像人员检测数据集VOC+YOLO格式5838张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;5838 标注数量(xml文件个数)&#xff1a;5838 标注数量(txt文件个数)&#xff1a;5838 标注…

UE5 CommonUI的使用(附源码版)

UE5 CommonUI的使用 前言快速配置配置Game Viewport Client ClassCommonGameViewportClient源代码 创建CommonInputAction表默认导航Action设置CommonUIInputData源码 Bind CommonInputBaseControllerDataCommonInputBaseControllerData源码 Common UI控件库和控件样式CommonUs…

探索Python编程乐趣:制作气泡反弹小游戏

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言&#xff1a;Python编程的轻松入门 二、游戏实现原理&#xff1a;气泡反弹的逻辑 …

echarts(6大基础图表)的使用

目录 一、vue2挂载 二、柱状图 2.1、基础柱状图介绍 2.2、标记&#xff1a;最大值\最小值(markPoint)、平均值(markLine) 2.3、显示&#xff1a;数值显示(label)、柱子宽度(barWidth)、横向柱状图 三、折线图 3.1、标记&#xff1a;最大值\最小值(markPoint)、平均值(ma…

微信资源混淆,导致的约束布局 Constraintlayout 控件重叠!

问题 1、广告六要素 虽然我不参与广告 sdk 接入等相关工作&#xff0c;但是最近总是听到一个词广告六要素。这到底是什么&#xff1f; 国内下载类广告&#xff0c;尤其是针对移动应用推广的广告&#xff0c;其成功实施往往围绕几个关键要素进行&#xff0c;这些要素能够帮助…

pcdn服务器应该怎么配?

要配置PCDN&#xff08;Private Content Delivery Network&#xff09;服务器&#xff0c;可以按照以下步骤进行&#xff1a; 需求分析&#xff1a;明确业务需求&#xff0c;确定所需的CDN功能和性能参数。这包括预期的流量、负载、内容类型、目标用户群体等。 硬件选择&#…

你真的懂firewalld吗?不妨看看我的这篇文章

一、firewalld简介 firewalld防火墙是Linux系统上的一种动态防火墙管理工具&#xff0c;它是Red Hat公司开发的&#xff0c;并在许多Linux发行版中被采用。相对于传统的静态防火墙规则&#xff0c;firewalld使用动态的方式来管理防火墙规则&#xff0c;可以更加灵活地适应不同…

MyBatis的基础操作

目录 一.什么是MyBatis? 二.使用MyBatis的准备工作 1.引入依赖: 2.配置数据库连接字符串(建立MaBatis和MySQL的连接) 3.在model包中建立数据库对应的实体类UserInfo 三.通过注解的方式实现MyBatis的开发 1.插入语句(Insert) 2.删除语句(Delete) 3.更新语句(Update) 4…

刚接触抖店并开通了个体店,怎么快速起店呢?运营思路参考如下

我是王路飞。 如果你刚接触抖店&#xff0c;并且开通了个体店&#xff0c;但不知道如何做店的话。 其实很简单&#xff0c;抖店的流程并没有这么复杂。 电商的核心无非就是产品&#xff0c;抖店的运营也都是围绕产品展开的。 我给你们说下抖店的运营思路你们可以作为参考&a…

李飞飞亲自撰文:大模型不存在主观感觉能力,多少亿参数都不行

近日&#xff0c;李飞飞连同斯坦福大学以人为本人工智能研究所 HAI 联合主任 John Etchemendy 教授联合撰写了一篇文章&#xff0c;文章对 AI 到底有没有感觉能力&#xff08;sentient&#xff09;进行了深入探讨。 「空间智能是人工智能拼图中的关键一环。」知名「AI 教母」李…

day16--集合进阶(Set、Map集合)

day16——集合进阶&#xff08;Set、Map集合&#xff09; 一、Set系列集合 1.1 认识Set集合的特点 Set集合是属于Collection体系下的另一个分支&#xff0c;它的特点如下图所示 下面我们用代码简单演示一下&#xff0c;每一种Set集合的特点。 //Set<Integer> set ne…

得物小程序逆向+qt可视化(不含sku)

声明 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01;wx a15018601872 本文章未…

canvas层级太高?解决方法

这个方法主要是依赖于邀请好有页面展示的canvas二维码二维码以及其他容器的图片 有一个保存图片功能&#xff0c;这个保存图片是需要将二维码以及涉及到的其他容器比如下图&#xff1a; 所以这时候需要canvas来绘制一个保存图片的效果&#xff0c;然后对这个canvas绘制的图片保…

AI写作工具的革命:AIGC如何提升内容生产效率

AIGC&#xff0c;即人工智能生成内容&#xff0c;是一种新兴的内容生产方式&#xff0c;它利用人工智能技术来自动生成文本、图像、音频、视频等多种形式的内容即进入实际应用层面。 所以AI不再是高深的、让人望尘莫及的算力算法&#xff0c;而是真实地贴近了我们的生活&#…

抖店重磅新规!保证金下调,一张营业执照能开多个店铺了!

哈喽~我是月月 抖音平台为助力小商家实现开店低成本&#xff0c;轻负担&#xff0c;高收益的模式 在5月30日正式实施了两个政策&#xff1a;保证金下调&#xff0c;一证多开 政策一&#xff1a;保证金下调 这次政策&#xff0c;涉及的类目优惠包含了&#xff0c;平台近70%的…

视频营销的智能剪辑:Kompas.ai如何塑造影响力视频内容

引言&#xff1a; 在当今数字化的营销领域&#xff0c;视频内容已经成为品牌吸引用户注意力、建立品牌形象和提升用户参与度的重要方式。然而&#xff0c;要想制作出具有影响力的视频内容&#xff0c;并不是一件容易的事情。这就需要借助先进的技术和工具&#xff0c;如人工智能…

解析控制台厂家在监控控制台尺寸定制有哪些标准

控制台厂家在监控控制台尺寸定制方面遵循着一系列严格的标准&#xff0c;以确保控制台能够适应不同监控室的具体需求&#xff0c;同时保证工作人员的操作便利和舒适性。以下是一些常见的监控控制台尺寸定制标准&#xff1a; 控制台的整体高度范围通常在720mm至1650mm之间&#…

【大模型】 基于AI和全球化进程的权衡:开源大模型与闭源大模型

【大模型】 基于AI和全球化进程的权衡&#xff1a;开源大模型与闭源大模型 前言 实际上关于开源or闭源&#xff0c;一直以来都是颇有争议的话题&#xff0c;人们争执于数据的隐私性和共享性&#xff0c;到底哪一方能获得的收益更大。而对于开源与闭源哪个更好实际上也就是说是…

clocking wizard IP核通过AXI4-Lite接口实现动态重新配置应用实例

在最近的FPGA应用中&#xff0c;应用到了基于Zynq 7000的Uart串口设计&#xff0c;为了让串口的时钟更精确&#xff0c;采用了外部时钟模式&#xff0c;如下图所示。外部时钟连接到了Clocking Wizard IP核的输出端。 在串口通信时&#xff0c;发现串口有错码出现。例如&#xf…

springboot社区助老志愿服务系统-计算机毕业设计源码96682

摘要 大数据时代下&#xff0c;数据呈爆炸式地增长。为了迎合信息化时代的潮流和信息化安全的要求&#xff0c;利用互联网服务于其他行业&#xff0c;促进生产&#xff0c;已经是成为一种势不可挡的趋势。在图书馆管理的要求下&#xff0c;开发一款整体式结构的社区助老志愿服务…