【Java--数据结构】提升数据处理速度!深入理解Java中的顺序表机制

server/2024/9/20 17:19:08/

欢迎关注个人主页:逸狼


创造不易,可以点点赞吗~

如有错误,欢迎指出~

目录

 两种创建顺序表的方法及区别

认识ArrayList的构造方法

不带参数的构造方法

带参数的构造方法

利用Collection 构造方法

举例

ArrayList 常用方法演示

add

addAll

remove

subList

ArrayList 的遍历方法

for i

for each

使用迭代器

法一:

法二:

倒着打印


 两种创建顺序表的方法及区别

        //两种创建的顺序表的 类型是不一样的//arrayList 访问的是当前对象的方法,方法包括了list接口中的方法,
//原因是ArrayList继承了List接口ArrayList<Integer> arrayList=new ArrayList<>();//通过list访问的是list接口中的方法List<Integer> list =new ArrayList<>();

认识ArrayList的构造方法

不带参数的构造方法

 elementData只是一个数组

所以这里不带参数的构造方法 并没有给数组分配大小,数组的长度是0

但是第一次调用add方法时,会给arrayList分配大小为10的内存

带参数的构造方法

初始化指定数组大小

利用Collection 构造方法

利用其他 Collection 构建 ArrayList

举例

例如可以将ArrayLIst的引用 当作参数、原因是ArrayList实现了Collection接口。

        ArrayList<Integer> arrayList=new ArrayList<>();ArrayList<Integer> arrayList1=new ArrayList<>(arrayList);

ArrayList 常用方法演示

add

默认尾插数据

第一次调用add方法时,会给arrayList分配大小为10的内存

        ArrayList<Integer> arrayList=new ArrayList<>();arrayList.add(10);arrayList.add(20);

addAll

将数据一次性添加

        ArrayList<Integer> arrayList=new ArrayList<>();arrayList.add(10);arrayList.add(20);ArrayList<Integer> arrayList1=new ArrayList<>();//这里是将arrayList中的10和20全部添加到了arrayList1中arrayList1.addAll(arrayList);//addAll:将数据一次性添加System.out.println(arrayList1);

结果

remove

通过下标删除元素

        ArrayList<Integer> arrayList=new ArrayList<>();arrayList.add(10);arrayList.add(11);arrayList.add(14);arrayList.add(20);arrayList.remove(1);//参数是下标arrayList.remove(Integer.valueOf(10));//通过valueOf找到10并返回他的下标System.out.println(arrayList);

结果

subList

截取顺序表的值(下标范围是[m,n) ,即从m到n,包含m,但不包含n )

        ArrayList<Integer> arrayList=new ArrayList<>();arrayList.add(10);arrayList.add(14);arrayList.add(11);arrayList.add(20);arrayList.add(19);System.out.println(arrayList);List<Integer> list=arrayList.subList(1,3);//截取下标为[1,3)的值System.out.println(list);

结果

注意

截取的不是值,是下标的 地址引用,所以改变list的值也会改变arrayList的值

        list.set(0,99);System.out.println(list);System.out.println(arrayList);

结果

ArrayList 的遍历方法

for i

        for (int i = 0; i < arrayList.size(); i++) {System.out.print(arrayList.get(i)+" ");}System.out.println();

for each

        for (Integer x:arrayList) {System.out.print(x+" ");}System.out.println();}

使用迭代器

只要继承了iterable的都可以使用迭代器进行遍历顺序表

法一:

        System.out.println("____Iterator_____");//使用迭代器,遍历顺序表   默认是从0下标开始打印Iterator<Integer> it= arrayList.iterator();//Iterator是一个接口while(it.hasNext()){//若下一个数存在,就满足条件System.out.print(it.next()+" ");//打印下一个}System.out.println();System.out.println("____ListIterator_____");

法二:

        //第二种方法ListIterator<Integer> it2= arrayList.listIterator();//listIterator实现了Iterator接口while(it.hasNext()){//若下一个数存在,就满足条件System.out.print(it2.next()+" ");}System.out.println();

倒着打印

        System.out.println("____ListIterator倒着打印_____");//第二种方法  倒着遍历ListIterator<Integer> it3= arrayList.listIterator(arrayList.size());//从arrayList.size(顺序表的末尾)开始遍历while(it3.hasPrevious()){//若上一个数存在,就满足条件System.out.print(it3.previous()+" ");}System.out.println();


http://www.ppmy.cn/server/13777.html

相关文章

idea连接Docker数据库

我们在docker下创建了数据库&#xff0c;想要更方便的查看和操作该数据库&#xff0c;idea和DataGrip或者其他软件都可以。在数据库连接时需要填写数据库名字&#xff0c;主机&#xff0c;端口&#xff0c;数据库用户名和密码。 输入之后先不要点击OK和按Enter键&#xff0c;我…

前端点击按钮触发复制文本

1. 效果展示&#xff1a; 点击复制小图标进行内容的复制 在这里我们先不考虑适用插件的情况&#xff0c;因为如果只是简单的复制&#xff0c;则不需要插件 2. 绑定事件 这里我们以vue为例子&#xff0c; 原生和react我后面补上 <i slot"prefix" class"i…

Linux系统IO

Linux系统中的IO函数主要包括两大类&#xff1a;标准C库中的函数和Linux系统调用。这些函数可以用于文件操作、网络通信、设备控制等多种IO任务。以下是Linux系统中常用的IO函数和系统调用的概述&#xff1a; 标准C库IO函数 这些函数是高级的、封装好的&#xff0c;并且与操作…

dedebiz文章内页自动给正文图片加了style样式怎么去掉

dede文章内页自动给正文图片加了style样式怎么去掉 打开&#xff1a;/system/archive/archives.class.php 查找&#xff1a;box-shadow&#xff0c;找到如下&#xff1a; margin:20px 0;box-shadow:0 1px 2px rgba(0,0,0,.1)改成下面这样&#xff1a; box-shadow:0 0px 0px rgb…

Dockers数据卷Volume

数据卷 Docker数据卷是什么 在 Docker 中&#xff0c;容器的文件系统是临时的&#xff0c;当容器被删除时&#xff0c;其文件系统也会随之销毁。但有时我们希望容器内的数据能够持久化&#xff0c;即使容器被删除后&#xff0c;数据也不会丢失&#xff0c;这时就可以使用数据…

idea中打印日志不会乱码,但是部署到外部tomcat中乱码了。

问题&#xff1a;如图Tomcat乱码&#xff0c;而且启动时的系统日志不会乱码&#xff0c;webapp中的打印日志才乱码。 idea中的情况如下&#xff1a;正常中文展示。 问题分析&#xff1a;网上分析的原因是Tomcat配置的字符集和web应用的字符集不匹配&#xff0c;网上集中的解决…

程序员面试必备:Class类,你学会了吗?

作为面试准备的程序员&#xff0c;你一定知道&#xff0c;在Java中&#xff0c;Class类是一个非常重要的概念。 它代表了一个类的元数据&#xff0c;通过它我们可以获取一个类的信息&#xff0c;比如类名、方法、字段等。 掌握了Class类的相关知识&#xff0c;不仅可以帮助你…

【大语言模型LLM】-如何使用大语言模型提高工作效率?

关于作者 行业&#xff1a;人工智能训练师/LLM 学者/LLM微调乙方PM发展&#xff1a;微调大模型训练/大模型增强检索RAG分享国内大模型前沿工作记录&#xff0c;共同成长&#xff0c;欢迎关注交流… 大语言模型LLM基础-系列文章 大语言模型LLM】-大语言模型如何编写Prompt?持…