进阶JAVA篇-深入了解 List 系列集合

这篇具有很好参考价值的文章主要介绍了进阶JAVA篇-深入了解 List 系列集合。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

        1.0 List 类的说明

         1.1 List 类的常用方法

        1.2 List 集合的遍历方式

        2.0 ArrayList 集合的底层原理

       2.1 从 ArrayList 集合的底层原理来了解具有该特性的原因:

         2.2 ArrayList 集合的优缺点

        3.0 LinkedList 集合的底层原理

        3.1 从 LinkedList 集合的底层原理来了解具有该特性的原因:

        3.2 LinkedList 集合的优缺点

        3.3 LinkedList 集合的特有方法


        1.0 List 类的说明

        在 Java 中,List 类是 Java 集合框架中的一种接口,它是一种有序的可重复的集合,用于存储多个元素。List 接口Collection 接口子接口它定义了一系列方法来操作和访问列表中的元素,所以 List 接口继承了 Collection 接口的方法。

有关的 Collection 接口的常用 API 介绍在以下链接:

进阶JAVA篇- Collection 类的常用的API与 Collection 集合的遍历方式-CSDN博客

         1.1 List 类的常用方法

以代码的形式来介绍这些方法:

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

public class Text_List {
    public static void main(String[] args) {

        //由于 List 是一个接口,不能直接去创建对象,
        //所以用 List 的实现类来创建一个对象,比如 ArrayList
        List<String> list = new ArrayList<>();//这是一行经典的代码!!!
        list.add("张三");
        list.add("李四");
        list.add("王五");
        System.out.println(list);
        //输出结果为:[张三, 李四, 王五]

        //1. add(index, element):在指定位置插入一个元素。
        list.add(1,"张麻子");
        System.out.println(list);
        //输出结果为:[张三, 张麻子, 李四, 王五]

        //2. remove(index):移除并返回指定位置的元素。
        list.remove(1);
        System.out.println(list);
        //输出结果为:[张三, 李四, 王五]

        //3. set(index, element):将指定位置的元素替换为新的元素。
        list.set(1,"张麻子");
        System.out.println(list);
        //输出结果为:[张三, 张麻子, 王五]

        //4. get(index):返回指定位置的元素。
        String a = list.get(1);
        System.out.println(a);
        //输出结果为:张麻子
        
    }
}

运行结果为:

进阶JAVA篇-深入了解 List 系列集合,java,开发语言

        1.2 List 集合的遍历方式

        除了 List 系列集合继承 Collcetion类的三个遍历方式之外,还支持普通的带索引的 for 循环。

 有关的 Collection 类的三个遍历方式的介绍在以下链接:

进阶JAVA篇- Collection 类的常用的API与 Collection 集合的遍历方式-CSDN博客

        由于 List 系列集合支持支持有序的,所以可以使用普通带索引的 for 循环。

代码如下:

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

public class Text_List {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();//这是一行经典的代码!!!!
        list.add("张三");
        list.add("李四");
        list.add("王五");
        System.out.println(list);

        //用普通的 for 循环来遍历以上集合
        for (int i = 0; i < list.size(); i++) {
            String a = list.get(i);
            System.out.println(a);
        }
    }
}

运行结果如下:

进阶JAVA篇-深入了解 List 系列集合,java,开发语言

        

        2.0 ArrayList 集合的底层原理

        由于 ArrayListList 的实现类,所以 ArrayList 特性与 List 接口是一致的,有序、可重复、有索引的特性。

       2.1 从 ArrayList 集合的底层原理来了解具有该特性的原因:

        ArrayList 集合是基于数组实现的,简单来说,ArrayList 集合就是一个可变长度的数组。因此可以解释为什么 ArrayList 集合具有有序、可重复、有索引的特性,是因为数组都具备这些特性。

        创建的 ArrayList 集合的对象在底层的过程:

        

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

public class Text_List {
    public static void main(String[] args) {

        //首先,利用无参构造器创建的集合,会在底层创建一个默认长度为0的数组
        List<String> list = new ArrayList<>();//这是一行经典的代码!!!!

        //当添加第一个元素的时候,会创建一个新的默认长度为10的数组
        list.add("a");
    }
}

        需要注意的是:

        1. 假如数组存满的时候会创建一个新的已扩容1.5倍的数组,然后将原来旧的数组里面的数据,迁移到新的已扩容的数组中来。

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

         2.2 ArrayList 集合的优缺点

        因为 ArrayList 是基于数组实现的,所以可以根据数组的特性来了解该集合的优缺点,由于数组是支持索引查找元素的,所以该集合的优点是很明显,查找元素特别的快。但是对于增添、删除、修改的操作来说是很慢的。

        所以 ArrayList 适合:根据索引查询数据。不适合:频繁对元素进行操作。

        3.0 LinkedList 集合的底层原理

        由于 LinkedListList 的实现类,所以 LinkedList 特性与 List 接口是一致的,有序、可重复、有索引的特性,但是与 ArrayList 在底层的原理是不一样的。

        3.1 从 LinkedList 集合的底层原理来了解具有该特性的原因:

        LinkedList 集合是基于双链表实现的。

简答介绍以下双链表:

        链表中的每一个节点都是独立的对象,也就是说内存不是连续的,每一个节点都包含记录上一个节点的地址还有下一个节点的地址、数值。

进阶JAVA篇-深入了解 List 系列集合,java,开发语言

        3.2 LinkedList 集合的优缺点

        根据该集合的数据结构为双链表,每查询一个元素是从头或者尾一步一步地去查询的,而不能直接去找到其中的元素,所以查询是很慢的。对于增加、删除、修改元素的速度相对来说是快的。但是有两个节点很特殊,对于头、尾节点无论查询还是增加、删除、修改元素速度都很快的。

        所以 LinkedList 集合适合:频繁对元素操作的。不合适:大量的查找元素。

        3.3 LinkedList 集合的特有方法

以代码的形式来介绍:

import java.util.LinkedList;
public class Text_LinkedList {

    public static void main(String[] args) {
        LinkedList<String> list = new LinkedList<>();
        list.add("张三");
        list.add("李四");
        list.add("王五");
        System.out.println(list);
        //输出结果为:[张三, 李四, 王五]

        //1. addFirst() :在该列表开头插入指定的元素
        list.addFirst("王麻子");
        System.out.println(list);
        //输出结果为:[王麻子, 张三, 李四, 王五]

        //2. addLast() :将指定的元素追加到此列表的末尾
        list.addLast("张麻子");
        System.out.println(list);
        //输出结果为:[王麻子, 张三, 李四, 王五, 张麻子]

        //3. getFirst() :返回此列表中的第一个元素
        String a = list.getFirst();
        System.out.println(a);
        //输出结果为:王麻子

        //4. getLast() :返回此列表中的最后一个元素
        String b = list.getLast();
        System.out.println(b);
        //输出结果为:张麻子

        //5. removeFirst() :从此列表中删除并返回第一个元素
        list.removeFirst();
        System.out.println(list);
        //输出结果为:[张三, 李四, 王五, 张麻子]

        //6. removeLast() :从此列表中删除并返回最后一个元素
        list.removeLast();
        System.out.println(list);
        //输出结果为:[张三, 李四, 王五]
    }
}

运行结果如下:

进阶JAVA篇-深入了解 List 系列集合,java,开发语言

        根据 LinkedList 集合的数据结构的特性,其应用场景可以是用设计队列(先进先出,后进后出),还可以用来设计(先进后出,后进先出)。文章来源地址https://www.toymoban.com/news/detail-717851.html



到了这里,关于进阶JAVA篇-深入了解 List 系列集合的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 进阶JAVA篇- Map 系列集合的遍历方法与常用API

    目录         1.0 Map 集合的说明         1.1 Map 集合的常用方法         1.2 Map 系列集合的特点         2.0 Map 系列集合的遍历方法(三种方法)          2.1 使用 keySet() 方法遍历         2.2 使用 entrySet() 方法遍历         2.3 使用 forEach() 方法遍历(Java 8+)  

    2024年02月08日
    浏览(51)
  • 进阶JAVA篇-深入了解 Stream 流对象的创建与中间方法、终结方法

    目录         1.0 Stream 流的说明         2.0 Stream 流对象的创建         2.1 对于 Collection 系列集合创建 Stream 流对象的方式         2.2 对于 Map 系列集合创建 Stream 流对象的方式         2.3 对于数组创建 Stream 流对象的方式         3.0 Stream 流的中间方法      

    2024年02月08日
    浏览(38)
  • Java开发基础系列(十三):集合对象(Set接口)

    😊 @ 作者: 一恍过去 💖 @ 主页: https://blog.csdn.net/zhuocailing3390 🎊 @ 社区: Java技术栈交流 🎉 @ 主题: Java开发基础系列(十三):集合对象(Set接口) ⏱️ @ 创作时间: 2023年07月27日 HashSet: 基于哈希表实现的集合,不保证元素的顺序。 LinkedHashSet: 基于哈希表和双向链表实现的

    2024年02月15日
    浏览(37)
  • Java List对象集合转Json & Json转List对象集合

    使用了阿里巴巴的 fastjson  首先引入依赖 示例如下 输出结果:

    2024年02月15日
    浏览(57)
  • Java集合之List

    ①.add(Object element) 向列表的尾部添加指定的元素。 ②.size() 返回列表中的元素个数。 ③.get(int index) 返回列表中指定位置的元素,index从0开始。  ④.add(int index, Object element) 在列表的指定位置(从0开始)插入指定元素 ⑤.set(int i, Object element) 使用元素element替换索引i位置的元素

    2024年02月15日
    浏览(41)
  • Java 集合 - List 接口

    在 Java 中, java.util.List 接口是 Java 集合框架中的一个接口,它继承自 Collection 接口,是单列集合的一个重要分支。List 接口的常见实现类包括 ArrayList 、 LinkedList 和 Vector 。 List 接口特点如下: 有序性 : List 中的元素是按照插入顺序排序的,因此可以很容易地遍历 List 中的元

    2024年02月07日
    浏览(61)
  • Java集合-List

    java.util.List 接口继承自Collection接口,是单列集合的一个重要分支,习惯性地会将实现了List接口的对象称为List集合,在List集合中允许出现重复的元素,所有的元素是以一种线性方式进行存储的,在程序中可以通过索引来访问集合中的指定元素,另外List集合还有一个特点就是

    2024年02月13日
    浏览(40)
  • Java List集合

    List系列集合:添加的元素是有序,可重复,有索引 ArrayList : 添加的元素是有序,可重复,有索引 LinkedList : 添加的元素是有序,可重复,有索引 Vector :是线程安全的,速度慢,开发中很少使用 6.1 List集合概述和特点 List集合概述 1、有序集合(也称为序列),用户可以精确控制

    2024年02月06日
    浏览(50)
  • Java集合框架List接口

    目录 List接口概念 List接口常用的方法 示例 Java集合框架中的List接口是一种有序的集合,它可以存储重复的元素。它是Collection接口的子接口,提供了一系列可以对列表进行操作的方法,如添加、插入、删除、获取元素等。List接口还可以通过索引访问元素,类似于数组。 List接

    2023年04月17日
    浏览(50)
  • 【Java基础】Java中List集合的常用方法

    在Java编程中,List集合是最常用的一种数据结构之一。它具有动态扩容、元素添加、删除和查询等基础操作,可以存储各种类型的对象,并且支持泛型。在本文中,我将介绍Java List集合的常用方法,并通过实例演示这些方法的使用。 一、List集合的创建与初始化 在使用List集合

    2024年02月16日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包