JavaSE——集合框架一(3/7)-List系列集合:特点、方法、遍历方式、ArrayList集合的底层原理

简介: JavaSE——集合框架一(3/7)-List系列集合:特点、方法、遍历方式、ArrayList集合的底层原理

List集合

我们要了解List集合三点:

  1. 有什么特点?
  2. 是否有特有功能?
  3. 适合什么业务场景?

特点、特有方法


List系列集合特点:有序、可重复、有索引

  • ArrayList:有序,可重复,有索引
  • LinkedList:有序,可重复,有索引

它们的底层实现不同,适合的场景不同。

List集合的特有方法

  • List集合因为支持索引,所以多了很多与索引相关的方法,当然,Collection的功能List也都继承了。
  • 图片.png

实例演示

import java.util.LinkedList;
import java.util.List;
 
public class ListDemo1 {
    public static void main(String[] args) {
        //1.创建一个ArrayList集合对象(有序、可重复、有索引)
        List<String> list = new LinkedList<>();     //一行经典代码(常用)
        list.add("蜘蛛精");
        list.add("至尊宝");
        list.add("至尊宝");
        list.add("牛夫人");
        System.out.println(list);                   //{蜘蛛精,至尊宝,至尊宝,牛夫人}
 
        //2.public void add(int index,E element):在某个索引位置插入元素
        list.add(2,"紫霞仙子");
        System.out.println(list);                   //{蜘蛛精,至尊宝,紫霞仙子,至尊宝,牛夫人}
 
        //3.public E remove(int index) :根据索引删除元素,返回被删除元素
        System.out.println(list.remove(2));   //紫霞仙子
        System.out.println(list);                   //{蜘蛛精,至尊宝,至尊宝,牛夫人}
 
        //4.public E get(int index):返回集合中制定位置的元素
        System.out.println(list.get(3));            //牛夫人
 
        //5.public E set(int index,E element):修改索引位置处的元素,修改成功后,会返回原来的数据
        System.out.println(list.set(3, "牛魔王"));   //牛夫人
        System.out.println(list);                   //{蜘蛛精,至尊宝,至尊宝,牛魔王}
    }
}

运行结果:


List集合支持的遍历方式

  1. for循环(因为List集合有索引)
  2. 迭代器
  3. 增强for循环
  1. Lambda表达式
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
 
public class ListDemo1 {
    public static void main(String[] args) {
        //1.创建一个ArrayList集合对象(有序、可重复、有索引)
        List<String> list = new LinkedList<>();     //一行经典代码(常用)
        list.add("蜘蛛精");
        list.add("至尊宝");
        list.add("牛夫人");
 
        //1.for循环
        for(int i = 0;i < list.size(); i++){
            String s = list.get(i);
            System.out.println(s);
        }
        System.out.println();
        //2.迭代器
        Iterator<String> it = list.iterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }
        System.out.println();
        //3.增强for循环(foreach)
        for(String s:list){
            System.out.println(s);
        }
        System.out.println();
        //4.JDK1.8开始之后的Lambda表达式
        list.forEach(s ->{
            System.out.println(s);
        });
    }
}

运行结果:


ArrayList集合的底层原理

  • 基于数组实现的。

数组的特点:查询快、增删慢

  • 查询速度快(注意:是根据索引查询数据快):查询数据通过地址值和索引定位,查询任意数据耗时相同。
  • 删除效率低:可能需要把后面很多的数据进行前移。
  • 添加效率极低::可能需要把后面很多的数据后移,再添加元素;或者也可能需要进行数组的扩容。

ArrayList集合的执行流程


  1. 利用无参构造器创建的集合,会在底层创建一个默认长度为0的数组
  2. 添加第一个元素时,底层会创建一个新的长度为10的数组
  3. 存满时,会扩容1.5倍
  4. 如果一次添加多个元素,1.5倍还放不下,则新创建数组的长度以实际为准

ArrayList集合的应用场景

  1. ArrayList适合:根据索引查询数据,比如根据随机索引取数据(高效)!或者数据量不是很大时!
  2. ArrayList不适合:数据量大的同时又要频繁的进行增删操作!

END



目录
相关文章
|
21天前
|
存储 Java 索引
(Python基础)新时代语言!一起学习Python吧!(二):字符编码由来;Python字符串、字符串格式化;list集合和tuple元组区别
字符编码 我们要清楚,计算机最开始的表达都是由二进制而来 我们要想通过二进制来表示我们熟知的字符看看以下的变化 例如: 1 的二进制编码为 0000 0001 我们通过A这个字符,让其在计算机内部存储(现如今,A 字符在地址通常表示为65) 现在拿A举例: 在计算机内部 A字符,它本身表示为 65这个数,在计算机底层会转为二进制码 也意味着A字符在底层表示为 1000001 通过这样的字符表示进行转换,逐步发展为拥有127个字符的编码存储到计算机中,这个编码表也被称为ASCII编码。 但随时代变迁,ASCII编码逐渐暴露短板,全球有上百种语言,光是ASCII编码并不能够满足需求
85 3
|
3月前
|
并行计算 Java API
Java List 集合结合 Java 17 新特性与现代开发实践的深度解析及实战指南 Java List 集合
本文深入解析Java 17中List集合的现代用法,结合函数式编程、Stream API、密封类、模式匹配等新特性,通过实操案例讲解数据处理、并行计算、响应式编程等场景下的高级应用,帮助开发者提升集合操作效率与代码质量。
169 1
|
3月前
|
存储 安全 Java
Java 学习路线 35 掌握 List 集合从入门到精通的 List 集合核心知识
本文详细解析Java中List集合的原理、常用实现类(如ArrayList、LinkedList)、核心方法及遍历方式,并结合数据去重、排序等实际应用场景,帮助开发者掌握List在不同业务场景下的高效使用,提升Java编程能力。
335 0
|
10月前
|
Java 机器人 程序员
从入门到精通:五种 List 遍历方法对比与实战指南
小米是一位热爱分享技术的程序员,本文详细介绍了 Java 中遍历 List 的五种方式:经典 for 循环、增强 for 循环、Iterator 和 ListIterator、Stream API 以及 forEach 方法。每种方式都有其适用场景和优缺点,例如 for 循环适合频繁访问索引,增强 for 循环和 forEach 方法代码简洁,Stream API 适合大数据量操作,ListIterator 支持双向遍历。文章通过生动的小故事和代码示例,帮助读者更好地理解和选择合适的遍历方式。
440 2
|
安全 Java 程序员
深入Java集合框架:解密List的Fail-Fast与Fail-Safe机制
本文介绍了 Java 中 List 的遍历和删除操作,重点讨论了快速失败(fail-fast)和安全失败(fail-safe)机制。通过普通 for 循环、迭代器和 foreach 循环的对比,详细解释了各种方法的优缺点及适用场景,特别是在多线程环境下的表现。最后推荐了适合高并发场景的 fail-safe 容器,如 CopyOnWriteArrayList 和 ConcurrentHashMap。
260 5
|
设计模式 安全 容器
数据结构第一篇【探究List和ArrayList之间的奥秘 】
数据结构第一篇【探究List和ArrayList之间的奥秘 】
100 5
|
存储 分布式计算 NoSQL
大数据-40 Redis 类型集合 string list set sorted hash 指令列表 执行结果 附截图
大数据-40 Redis 类型集合 string list set sorted hash 指令列表 执行结果 附截图
115 3
|
11月前
|
NoSQL Java Redis
List集合按照由小到大排序或者由大到小排序
List集合按照由小到大排序或者由大到小排序
222 0
|
NoSQL Java Redis
List集合按照由小到大排序或者由大到小排序
List集合按照由小到大排序或者由大到小排序
112 3
|
安全 Java
java线程之List集合并发安全问题及解决方案
java线程之List集合并发安全问题及解决方案
1309 1

热门文章

最新文章