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


    欢迎关注个人主页:逸狼


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

    如有错误,欢迎指出~

    目录

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

    认识ArrayList的构造方法

    不带参数的构造方法

    带参数的构造方法

    利用Collection 构造方法

    举例

    ArrayList 常用方法演示

    add

    addAll

    remove

    subList

    ArrayList 的遍历方法

    for i

    for each

    使用迭代器

    法一:

    法二:

    倒着打印


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

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

    认识ArrayList的构造方法

    不带参数的构造方法

     elementData只是一个数组

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

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

    带参数的构造方法

    初始化指定数组大小

    利用Collection 构造方法

    利用其他 Collection 构建 ArrayList

    举例

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

    1. ArrayList<Integer> arrayList=new ArrayList<>();
    2. ArrayList<Integer> arrayList1=new ArrayList<>(arrayList);

    ArrayList 常用方法演示

    add

    默认尾插数据

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

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

    addAll

    将数据一次性添加

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

    结果

    remove

    通过下标删除元素

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

    结果

    subList

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

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

    结果

    注意

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

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

    结果

    ArrayList 的遍历方法

    for i

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

    for each

    1. for (Integer x:arrayList) {
    2. System.out.print(x+" ");
    3. }
    4. System.out.println();
    5. }

    使用迭代器

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

    法一:

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

    法二:

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

    倒着打印

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

  • 相关阅读:
    C语言创建txt并循环写进字符
    14:00面试,14:06就出来了,问的问题有点变态。。。
    实时WebRTC网页播放器进入快速功能迭代
    Gromacs分析处理-模拟前后蛋白结构差异对比图的制作
    Linux高性能服务器——状态机
    ubuntu20.0安装 java并配置环境
    SPL比SQL更难了还是更容易了?
    【深度学习】ResNet网络详解
    【面试题 01.09. 字符串轮转】
    如何使用Docker部署开源Leanote蚂蚁笔记并发布个人博客至公网
  • 原文地址:https://blog.csdn.net/2301_80898480/article/details/138089425