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



目录
相关文章
|
2月前
|
存储 安全 Java
【Java集合类面试二十五】、有哪些线程安全的List?
线程安全的List包括Vector、Collections.SynchronizedList和CopyOnWriteArrayList,其中CopyOnWriteArrayList通过复制底层数组实现写操作,提供了最优的线程安全性能。
|
2月前
|
安全
List集合特有功能
List集合特有功能
31 2
|
4天前
|
NoSQL Java Redis
List集合按照由小到大排序或者由大到小排序
List集合按照由小到大排序或者由大到小排序
10 3
|
2月前
|
Java
用JAVA架建List集合为树形结构的代码方法
这段代码定义了一个表示树形结构的 `Node` 类和一个用于构建树形结构的 `TreeController`。`Node` 类包含基本属性如 `id`、`pid`、`name` 和 `type`,以及子节点列表 `children`。`TreeController` 包含初始化节点列表并将其转换为树形结构的方法。通过过滤和分组操作实现树形结构的构建。详情可见:[代码示例链接1](http://www.zidongmutanji.com/zsjx/43551.html),[代码效果参考链接2](https://www.257342.com/sitemap/post.html)。
31 5
|
2月前
|
测试技术 索引 Python
Python接口自动化测试框架(基础篇)-- 常用数据类型list&set()
本文介绍了Python中list和set两种数据类型的使用,包括它们的创建、取值、增删改查操作、排序以及内置函数的使用,还探讨了list的比较函数和set的快速去重功能。
20 0
|
4月前
|
安全 Java
java线程之List集合并发安全问题及解决方案
java线程之List集合并发安全问题及解决方案
559 1
|
3月前
|
Java API Apache
怎么在在 Java 中对List进行分区
本文介绍了如何将列表拆分为给定大小的子列表。尽管标准Java集合API未直接支持此功能,但Guava和Apache Commons Collections提供了相关API。
|
3月前
|
运维 关系型数据库 Java
PolarDB产品使用问题之使用List或Range分区表时,Java代码是否需要进行改动
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
3月前
|
存储 安全 Java
详解Java中集合的List接口实现的ArrayList方法 | Set接口实现的HashSet方法
详解Java中集合的List接口实现的ArrayList方法 | Set接口实现的HashSet方法
|
4月前
|
Java API
使用 Java 来实现两个 List 的差集操作
使用 Java 来实现两个 List 的差集操作
66 3
下一篇
无影云桌面