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

欢迎关注个人主页:逸狼


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

如有错误,欢迎指出~

目录

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

认识ArrayList的构造方法

不带参数的构造方法

带参数的构造方法

[利用Collection 构造方法](#利用Collection 构造方法)

举例

[ArrayList 常用方法演示](#ArrayList 常用方法演示)

add

addAll

remove

subList

[ArrayList 的遍历方法](#ArrayList 的遍历方法)

[for i](#for i)

[for each](#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();
相关推荐
MacroZheng3 分钟前
还在用WebSocket实现即时通讯?试试MQTT吧,真香!
java·spring boot·后端
稚辉君.MCA_P8_Java18 分钟前
豆包 Java的23种设计模式
java·linux·jvm·设计模式·kubernetes
tanyongxi6618 分钟前
C++ 特殊类设计与单例模式解析
java·开发语言·数据结构·c++·算法·单例模式
遗憾皆是温柔21 分钟前
24. 什么是不可变对象,好处是什么
java·开发语言·面试·学习方法
midsummer_woo26 分钟前
基于springboot的IT技术交流和分享平台的设计与实现(源码+论文)
java·spring boot·后端
Peter(阿斯拉)37 分钟前
[Java性能优化]_[时间优化]_[字符串拼接的多种方法性能分析]
java·性能优化·stringbuilder·string·字符串拼接·stringbuffer·时间优化
wearegogog12341 分钟前
C语言中的输入输出函数:构建程序交互的基石
c语言·开发语言·交互
Fine姐44 分钟前
The Network Link Layer: 无线传感器中Delay Tolerant Networks – DTNs 延迟容忍网络
开发语言·网络·php·硬件架构
HAPPY酷1 小时前
给纯小白的Python操作 PDF 笔记
开发语言·python·pdf
liulilittle1 小时前
BFS寻路算法解析与实现
开发语言·c++·算法·宽度优先·寻路算法·寻路