List集合的学习

常用的方法
java 复制代码
package MyApi.search.myCollection;

import java.util.ArrayList;
import java.util.List;

public class listdemo01 {
    public static void main(String[] args) {
       //1.创建一个集合
        List<String> list=new ArrayList<>();
        //2.添加元素
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        //在指定位置插入元素
        //原来索引上的元素会依次往后移
        list.add(1,"dddd");
        //删除指定索引处的元素,返回被删除的元素
        String remove = list.remove(0);
        System.out.println(remove);
        //修改指定元素
        String set = list.set(0, "bbbb");
        System.out.println(set);
        //通过索引得到集合元素
        String s = list.get(0);
        System.out.println(s);

    }
}
遍历方式
java 复制代码
package MyApi.search.myCollection;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
import java.util.function.Consumer;

public class listdemo02 {
    public static void main(String[] args) {
        //创建集合并添加奥元素
        List<String> list=new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        //1.迭代器遍历
      /*  Iterator<String> iterator = list.iterator();
        while(iterator.hasNext()){
            String next = iterator.next();
            System.out.println(next);
        }*/
        //2.增强for
        /*for (String s : list) {
            System.out.println(s);
        }*/
        //3.lamdba
       /* list.forEach (s-> System.out.println(s)
        );*/
        //4.普通for
       /* for (int i = 0; i < list.size(); i++) {
            String s = list.get(i);
            System.out.println(s);
        }*/
        //5.列表迭代器
        ListIterator<String> iterator = list.listIterator();
        while(iterator.hasNext()){
            String next = iterator.next();
            if("bbb".equals(next)){
                iterator.add("qqq");
            }
            System.out.println(next);
        }
    }
}
栈

特点:后进先出,先进后出

队列

特点:先进先出,后进后出

数组

特点:

  • 查询速度快:查询数据通过地址值和索引定位,查询任意数据耗时相同。

  • 删除效率低:要将原始数据删除,同时后面每个数据前移。

  • 添加效率低:添加位置后的每个数据后移,在添加元素。

链表

链表中的节点是独立的对象,在内存中是不连续的,每个结点包含数据值和下一个结点的地址。

链表查询速度慢,无论查询那个数据都要从头开始找。

链表的增删相对快。

ArrayList集合底层原理
  • ArrayList底层是数据结构的

  • 利用空参创建的集合,在底层创建一个默认长度为0的数组

  • 添加第一个元素时,底层会创建一个新的长度为10的数组

  • 存满时,会扩容1.5倍

  • 如果一次添加多个元素,1.5倍还放不下,则新创建数组的长度以实际为准。

LinkedList集合
  • 底层数据结构是双链表,查询慢,增删快,但是如果操作的是首尾元素,速度也是极快的。
相关推荐
诸神缄默不语8 分钟前
小春学习日刊 2026年第2期:2026.10.14
学习
qq_2842740513 分钟前
电气控制与PLC·HMI触摸屏组态与自动伸缩门控制系统 CSDN发布稿
笔记·学习·自动化
xier_ran31 分钟前
【infra之路】AI 编译器学习笔记(七):Linalg 与 Tiling——把迭代空间切成块
人工智能·笔记·学习
承渊政道42 分钟前
Linux网络学习【应用层自定义协议与序列化实战:从手写序列化与反序列化到深入理解进程间关系与守护进程】
linux·网络·学习·ubuntu·json·序列化与反序列化
你想知道什么?1 小时前
标准化与归一化-学习笔记
笔记·学习
星恒随风1 小时前
Linux进程信号(一):从Ctrl+C到kill、raise、alarm,深入理解信号的概念与产生原理
linux·c语言·笔记·学习·状态模式
2603_969579281 小时前
怎样取消电脑上的自动备份?不同来源的关闭方法
学习
CV@CV1 小时前
世界模型环境预测与内在表征基础原理
人工智能·学习·边缘计算·量子计算·具身智能
知识分享小能手1 小时前
C学习教程,从入门到精通,C语言数组 —— 知识点详解(8)
c语言·学习·算法
卿卿的产品经理日记1 小时前
【AI产品经理实战】Day 34|计算机科学速成②:从水流开关到 Unicode,把整个电脑拆成一长串 0 和 1
人工智能·笔记·科技·学习·产品经理