Java数据结构之ArrayList(如果想知道Java中有关ArrayList的知识点,那么只看这一篇就足够了!)

news2024/11/27 23:37:35

        前言:ArrayList是Java中最常用的动态数组实现之一,它提供了便捷的操作接口和灵活的扩展能力,使得在处理动态数据集合时非常方便。本文将深入探讨Java中ArrayList的实现原理、常用操作以及一些使用场景。


✨✨✨这里是秋刀鱼不做梦的BLOG

✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-CSDN博客

在文章开始之前,先让我们看一下本文的大致内容:

目录

1.认识ArrayList

2.ArrayList的创建

(1)使用默认构造函数创建一个空的 ArrayList:

(2)使用带有初始容量的构造函数创建 ArrayList:

(3)使用 ArrayList(Collection c) 构造函数创建 ArrayList 的简单示例:

3.ArrayList的遍历

遍历ArrayList的方式:

        (1)使用for循环

        (2)使用增强型for循环:

        (3)使用迭代器

4.ArrayList常用API

        (1)boolean add(E e)——尾插 e

        (2)void add(int index, E element)——将 e 插入到 index 位置

        (3)boolean addAll(Collection c)——尾插 c 中的元素

        (4)E remove(int index)——删除 index 位置元素

        (5)boolean remove(Object o)——删除遇到的第一个 o

        (6)E get(int index)——获取下标 index 位置元素

        (7)E set(int index, E element)——将下标 index 位置元素设置为 element

        (8)void clear()——清空

        (9)boolean contains(Object o)——判断 o 是否在线性表中

        (10)int indexOf(Object o)——返回第一个 o 所在下标

        (11)int lastIndexOf(Object o)——返回最后一个 o 的下标

        (12)List subList(int fromIndex, int toIndex)——截取部分 list


1.认识ArrayList

        在正式的学习ArrayList之前,我们需要了解一下什么是Java中的ArrayList(顺序表):

        ArrayList是Java中的一个动态数组类,它实现了List接口,可以存储任意类型的对象,并且大小可以动态地调整。ArrayList允许在列表的任意位置进行元素的插入、删除、获取等操作,而且它还能自动扩展内部数组的容量,以适应存储需求的增长。

ArrayList是一个普通的类,实现了List接口,具体框架图如下:

读到这就会有读者发问了,ArrayList到底是怎么去实现这些功能的呢?,它的底层原理到底是怎么样的呢?答案如下:

ArrayList的实现原理:

        ArrayList的内部实现是基于数组的,它使用一个Object类型的数组来存储元素。当创建一个ArrayList实例时,会初始化一个默认大小的数组,当数组容量不足以存储新的元素时,ArrayList会自动扩展数组的大小,通常会将当前数组的容量增加一倍,并将原来的元素复制到新数组中,当然其他的操作也是类似。

通过上面的描述,我们就大致的了解了Java中ArrayList(顺序表)了。

2.ArrayList的创建

        了解完了Java中ArrayList(顺序表),那么我们如何去创建并使用它呢?在Java中给我们提供了三种创建ArrayList(顺序表)的方式。

创建方式解释
ArrayList()无参构造
ArrayList(int initialCapacity)指定顺序表初始容量
ArrayList(Collection<? extends E> c)利用其他 Collection 构建 ArrayList

现在让我们使用三种不同的方式来创建一下ArrayList(顺序表):
 

(1)使用默认构造函数创建一个空的 ArrayList:

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        // 创建一个空的 ArrayList
        ArrayList<String> list1 = new ArrayList<>();
        
        // 添加元素到 ArrayList(这里可以先看一下就可以)
        list1.add("Apple");
        list1.add("Banana");
        list1.add("Orange");
        
        // 打印 ArrayList
        System.out.println("ArrayList 1: " + list1);
    }
}

(2)使用带有初始容量的构造函数创建 ArrayList:

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        // 创建一个具有初始容量的 ArrayList
        ArrayList<Integer> list2 = new ArrayList<>(5);
        
        // 添加元素到 ArrayList(这里先看一下就可以)
        list2.add(10);
        list2.add(20);
        list2.add(30);
        
        // 打印 ArrayList
        System.out.println("ArrayList 2: " + list2);
    }
}

(3)使用 ArrayList(Collection<? extends E> c) 构造函数创建 ArrayList 的简单示例:

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

public class Main {
    public static void main(String[] args) {
        // 创建一个包含初始元素的集合
        List<String> originalList = new ArrayList<>();
        originalList.add("Apple");
        originalList.add("Banana");
        originalList.add("Orange");
        
        // 使用原始集合创建一个新的 ArrayList
        ArrayList<String> newList = new ArrayList<>(originalList);
        
        // 打印新的 ArrayList
        System.out.println("New ArrayList: " + newList);
    }
}

这样我们就了解了如何在Java中创建ArrayList(顺序表)了。

3.ArrayList的遍历

        在认识ArrayList的段落中,我们知道了ArrayList的底层是一个动态数组,既然是数组的话,我们是不是可以像遍历数组一样遍历ArrayList呢?答案是——是的,但是在此之上我们还可以使用迭代器对其进行遍历。

遍历ArrayList的方式:

        (1)使用for循环

for (int i = 0; i < list.size(); i++) {
    int element = list.get(i);
    System.out.println(element);
}

        (2)使用增强型for循环:

for (int element : list) {
    System.out.println(element);
}

       

        (3)使用迭代器

Iterator<Integer> iterator = list.iterator();
while (iterator.hasNext()) {
    int element = iterator.next();
    System.out.println(element);
}

        以上就是三种遍历Java中ArrayList的方式,每种方式都有其适用的场景,我们需要根据实际需求选择最合适的方式来遍历ArrayList对象。

4.ArrayList常用API

        在上文中,我们大致的了解了什么是Java中的ArrayList,以及学会了创建和遍历Java中的ArrayList,现在让我们学习一下Java中提供给我们的ArrayList中的常用API。

先让我们看一下有哪些常用的ArrayList中的API:

常用方法解释
boolean add(E e)尾插 e
void add(int index, E element)将 e 插入到 index 位置
boolean addAll(Collection<? extends E> c)尾插 c 中的元素
E remove(int index)删除 index 位置元素
boolean remove(Object o)删除遇到的第一个 o
E get(int index)获取下标 index 位置元素
E set(int index, E element)将下标 index 位置元素设置为 element
void clear()清空
boolean contains(Object o)判断 o 是否在线性表中
int indexOf(Object o)返回第一个 o 所在下标
int lastIndexOf(Object o)返回最后一个 o 的下标
List<E> subList(int fromIndex, int toIndex)截取部分 list

这里我们一个一个的进行实例演示:

        (1)boolean add(E e)——尾插 e

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        // 创建一个空的 ArrayList
        ArrayList<String> list = new ArrayList<>();
        
        // 向 ArrayList 中添加元素
        list.add("Apple");
        
        // 打印添加操作的结果
        System.out.println(list); // 输出:Apple
    }
}

        在这个示例中,我们创建了一个空的 ArrayList,然后使用 add() 方法向其中添加了一个元素 "Apple",最后打印了list。

       

        (2)void add(int index, E element)——将 e 插入到 index 位置

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        // 创建一个空的 ArrayList
        ArrayList<String> list = new ArrayList<>();
        
        // 向 ArrayList 中指定位置添加元素
        list.add("Apple");
        list.add("Banana");
        list.add("Orange");
        System.out.println(list); // 输出:[Apple, Banana, Orange]
        
        list.add(1, "Grapes"); // 在索引 1 处添加元素 "Grapes"
        
        // 打印添加后的 ArrayList
        System.out.println(list); // 输出:[Apple, Grapes, Banana, Orange]
    }
}

        在这个示例中,我们创建了一个空的 ArrayList,然后使用 add() 方法向其中添加了三个元素:"Apple"、"Banana" 和 "Orange"。接着,我们使用 add(int index, E element) 方法在索引 1 处添加了元素 "Grapes"。最后,我们打印了添加后的 ArrayList,可以看到 "Grapes" 被成功添加到了索引 1 处。

        (3)boolean addAll(Collection<? extends E> c)——尾插 c 中的元素

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

public class Main {
    public static void main(String[] args) {
        // 创建一个空的 ArrayList
        ArrayList<String> list1 = new ArrayList<>();
        list1.add("Apple");
        list1.add("Banana");
        
        // 创建一个包含元素的集合
        List<String> elementsToAdd = Arrays.asList("Orange", "Grapes");
        
        // 使用 addAll() 方法将集合中的元素添加到 ArrayList 中
        list1.addAll(elementsToAdd);   
       
        // 打印最终的 ArrayList
        System.out.println(list1); // 输出:[Apple, Banana, Orange, Grapes]
    }
}

        在这个示例中,我们创建了一个空的 ArrayList,然后向其中添加了两个元素:"Apple" 和 "Banana"。接着,我们创建了一个包含两个元素的集合 elementsToAdd。最后,我们使用 addAll() 方法将集合 elementsToAdd 中的元素添加到 ArrayList 中。

        (4)E remove(int index)——删除 index 位置元素

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        // 创建一个包含几个元素的 ArrayList
        ArrayList<String> list = new ArrayList<>();
        list.add("Apple");
        list.add("Banana");
        list.add("Orange");
        
        // 打印原始的 ArrayList
        System.out.println("Original ArrayList: " + list); // 输出:[Apple, Banana, Orange]
        
        // 移除索引为 1 处的元素
        String removedElement = list.remove(1);
        
        // 打印被移除的元素和最终的 ArrayList
        System.out.println("Removed element: " + removedElement); // 输出:Banana
        System.out.println("Final ArrayList: " + list); // 输出:[Apple, Orange]
    }
}

        在这个示例中,我们创建了一个包含三个元素的 ArrayList,然后使用 remove(int index) 方法移除了索引为 1 处的元素 "Banana"。最后,我们打印了被移除的元素和最终的 ArrayList,可以看到 "Banana" 被成功移除了。

        (5)boolean remove(Object o)——删除遇到的第一个 o

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        // 创建一个包含几个元素的 ArrayList
        ArrayList<String> list = new ArrayList<>();
        list.add("Apple");
        list.add("Banana");
        list.add("Orange");
        
        // 打印原始的 ArrayList
        System.out.println("Original ArrayList: " + list); // 输出:[Apple, Banana, Orange]
        
        // 移除元素 "Banana"
        list.remove("Banana");
        
        // 打印最终的 ArrayList
        System.out.println(list); // 输出:[Apple, Orange]
    }
}

        在这个示例中,我们创建了一个包含三个元素的 ArrayList,然后使用 remove(Object o) 方法移除了元素 "Banana"。最后,我们打印了最终的 ArrayList,可以看到 "Banana" 被成功移除了。

        (6)E get(int index)——获取下标 index 位置元素

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        // 创建一个包含几个元素的 ArrayList
        ArrayList<String> list = new ArrayList<>();
        list.add("Apple");
        list.add("Banana");
        list.add("Orange");
        
        // 获取索引为 1 处的元素
        String element = list.get(1);
        
        // 打印获取到的元素
        System.out.println(element); // 输出:Banana
    }
}

        在这个示例中,我们创建了一个包含三个元素的 ArrayList,然后使用 get(int index) 方法获取了索引为 1 处的元素。最后,我们打印了获取到的元素,可以看到获取操作成功返回了 "Banana" 这个元素。

        (7)E set(int index, E element)——将下标 index 位置元素设置为 element

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        // 创建一个包含几个元素的 ArrayList
        ArrayList<String> list = new ArrayList<>();
        list.add("Apple");
        list.add("Banana");
        list.add("Orange");
        
        // 打印原始的 ArrayList
        System.out.println(list); // 输出:[Apple, Banana, Orange]
        
        // 将索引为 1 处的元素替换为 "Grapes"
        list.set(1, "Grapes");
        
        // 打印最终的 ArrayList
        System.out.println(list); // 输出:[Apple, Grapes, Orange]
    }
}

        在这个示例中,我们创建了一个包含三个元素的 ArrayList,然后使用 set(int index, E element) 方法将索引为 1 处的元素 "Banana" 替换为 "Grapes"。最后,我们打印了最终的 ArrayList,可以看到替换操作成功地将 "Banana" 替换为了 "Grapes"。

        (8)void clear()——清空

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        // 创建一个包含几个元素的 ArrayList
        ArrayList<String> list = new ArrayList<>();
        list.add("Apple");
        list.add("Banana");
        list.add("Orange");
        
        // 打印原始的 ArrayList
        System.out.println(list); // 输出:[Apple, Banana, Orange]
        
        // 使用 clear() 方法清空 ArrayList
        list.clear();
        
        // 打印清空后的 ArrayList
        System.out.println(list); // 输出:[]
    }
}

        在这个示例中,我们创建了一个包含三个元素的 ArrayList,然后使用 clear() 方法清空了该列表。最后,我们打印了清空后的 ArrayList,可以看到列表中不再包含任何元素。

        (9)boolean contains(Object o)——判断 o 是否在线性表中

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        // 创建一个包含几个元素的 ArrayList
        ArrayList<String> list = new ArrayList<>();
        list.add("Apple");
        list.add("Banana");
        list.add("Orange");
        
        // 检查 ArrayList 是否包含元素 "Banana"
        boolean containsBanana = list.contains("Banana");
        
        // 打印检查结果
        System.out.println(containsBanana); // 输出:true
    }
}

        在这个示例中,我们创建了一个包含三个元素的 ArrayList,然后使用 contains(Object o) 方法检查列表中是否包含元素 "Banana"。最后,我们打印了检查结果,可以看到列表中确实包含 "Banana" 元素。

        (10)int indexOf(Object o)——返回第一个 o 所在下标

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        // 创建一个包含几个元素的 ArrayList
        ArrayList<String> list = new ArrayList<>();
        list.add("Apple");
        list.add("Banana");
        list.add("Orange");
        
        // 获取元素 "Banana" 在 ArrayList 中的索引
        int index = list.indexOf("Banana");
        
        // 打印索引值
        System.out.println(index); // 输出:1
    }
}

        在这个示例中,我们创建了一个包含三个元素的 ArrayList,然后使用 indexOf(Object o) 方法获取了元素 "Banana" 在列表中的索引。最后,我们打印了索引值,可以看到 "Banana" 元素的索引是 1。

        (11)int lastIndexOf(Object o)——返回最后一个 o 的下标

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        // 创建一个包含几个元素的 ArrayList
        ArrayList<String> list = new ArrayList<>();
        list.add("Apple");
        list.add("Banana");
        list.add("Orange");
        list.add("Banana");
        
        // 获取元素 "Banana" 在 ArrayList 中的最后一个索引
        int lastIndex = list.lastIndexOf("Banana");
        
        // 打印最后一个索引值
        System.out.println(lastIndex); // 输出:3
    }
}

        在这个示例中,我们创建了一个包含四个元素的 ArrayList,其中包含两个 "Banana" 元素。然后使用 lastIndexOf(Object o) 方法获取了元素 "Banana" 在列表中的最后一个索引。最后,我们打印了最后一个索引值,可以看到最后一个 "Banana" 元素的索引是 3。

        (12)List<E> subList(int fromIndex, int toIndex)——截取部分 list

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

public class Main {
    public static void main(String[] args) {
        // 创建一个包含几个元素的 ArrayList
        ArrayList<String> list = new ArrayList<>();
        list.add("Apple");
        list.add("Banana");
        list.add("Orange");
        list.add("Grapes");
        list.add("Kiwi");
        
        // 获取子列表,包括索引 1 到 3 的元素,但不包括索引 3
        List<String> subList = list.subList(1, 3);
        
        // 打印子列表
        System.out.println(subList); // 输出:[Banana, Orange]
    }
}

        在这个示例中,我们创建了一个包含五个元素的 ArrayList,然后使用 subList(int fromIndex, int toIndex) 方法获取了子列表,包括索引 1 到 3 的元素,但不包括索引 3。最后,我们打印了子列表,可以看到子列表包含了 "Banana" 和 "Orange" 元素。

注意:

        在使用List<E> subList(int fromIndex, int toIndex)方法的时候,我们对获取的子列表进行修改的时候,原来的列表也会被修改。

这样我们就大致的了解了Java中ArrayList的常用API了。


以上就是本篇文章的全部内容了~~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1825562.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kotlin 语言基础学习

什么是Kotlin ? Kotiln翻译为中文是:靠他灵。它是由JetBrains 这家公司开发的,JetBrains 是一家编译器软件起家的,例如常用的WebStorm、IntelliJ IDEA等软件。 Kotlin官网 JetBrains 官网 Kotlin 语言目前的现状: 目前Android 已将Kotlin 作为官方开发语言。 Spring 框…

Java—读取properties配置文件

编写配置文件 usernameroot password123456 urljdbc:mysql://localhost:3306/myDatabase driverClassNamecom.mysql.cj.jdbc.Driver 编写测试类 import java.io.FileInputStream; import java.io.IOException; import java.util.Enumeration; import java.util.Properties;/*…

vagrant putty错误的解决

使用Vagrant projects for Oracle products and other examples 新创建的虚机&#xff0c;例如vagrant-projects/OracleLinux/8。 用vagrant ssh可以登录&#xff1a; $ vagrant ssh > vagrant: Getting Proxy Configuration from Host...Welcome to Oracle Linux Server …

专业学习|博弈论-博弈论概述

&#xff08;一&#xff09;认识博弈论&#xff1a;解析复杂决策与策略 &#xff08;1&#xff09;认识博弈 博弈论广泛应用于分析个体间因利益冲突而产生的决策问题。通过构建不同模型来探讨如经贸关系、军事威胁等问题&#xff0c;旨在寻找均衡解并提供新知&#xff0c;相较…

C语言概述与历史

引言 C语言是一门历史悠久且影响深远的编程语言。它不仅为后继的许多编程语言奠定了基础&#xff0c;同时因其高效性和灵活性在系统编程和嵌入式开发领域得到了广泛应用。本篇文章将全面介绍C语言的起源与发展、设计目标与理念&#xff0c;以及C语言的标准演化历程&#xff0c;…

字符数组基础知识及题目

死识。。。 字符该如何存储呢&#xff1f;这一点我们在以前就接触过了。用char来存储。 如何输入一个单词呢&#xff1f; char a[10002]; scanf("%s",a); 就不用地址符了。 如何输入句子呢&#xff1f; char a[100002]; gets(a); gets是读入句子的&#xff0c…

利用智能交流控制设计方法实现更好的家电安全

从机电到数字控制的转变首先是通过现成的电子设备完成的——系统架构是围绕 MCU、分立晶体管和高压双向可控硅构建的。 家用电器的这场小型革命部分是由于减少能源和水的浪费以及提高易用性的需求日益增长而推动的。 随着市场及其标准的化&#xff0c;性能和成本效率一直是家…

用MATLAB绘制地球围绕太远运动而月球围绕地球运动

绘制 MATLAB代码: clc;close all;clear all;warning off;%清除变量 rand(seed, 100); randn(seed, 100); format long g;% 初始化参数 num_frames 1000; % 动画帧数 G200; dt 0.01; % 时间步长% 设置太阳、地球和月球的初始位置和半径 sun_position [0, 0]; earth_radius …

Docker MySQL Shutting down mysqld

6月初至6月15日发现MySQL无故停机多次&#xff0c;导致系统无法使用。接下来各种日志查看&#xff0c;排查原因。先附上一份Docker种MySQL的日志的截图。 一、根据Docker的日志初步估计是数据库内存飙升&#xff0c;从而被系统杀掉进程 查询Linux系统日志&#xff0c;在宿主机…

海康威视-按时间下载录像文件

目录 1、流程图 1.1、录像查找 1.2、录下下载 2、按时间下载 2.1、开启下载 2.2、后台下载 2.2.1、方式一 2.2.2、方式二 3、问题整理 3.1、错误码34 3.2、错误码10 3.3、下载的文件大小为0kb 4、错误码 由于没有在官方文档中找到通过ISAPI协议透传实现按时间下…

---String类---

在c语言中要使用字符串&#xff0c;只能通过字符指针或者字符数组&#xff0c;然后再通过函数进行各种操作&#xff0c;这种将变量和变量方法分开的方式显然不符合面向对象的编程&#xff0c;所以java中添加了String这个类 String类构造 而对于string有很多的方法 字符串长度…

DataFrames相关介绍文件读取

目录 1.初识DataFrame 2.DataFrame的构造函数 3.数据框的轴 4.CSV文件读取 5.Excel文件读取 1.初识DataFrame &#xff08;1&#xff09;昨天&#xff0c;我们学习了Series。而Pandas的另一种数据类型&#xff1a;DataFrame&#xff0c;在许多特性上和Series有相似之处。 …

Python虚拟环境的配置

前言&#xff1a; 本人一度被Python的虚拟环境的配置所困扰&#xff0c;前段时间抽空学习了一下&#xff0c;现在总结一下方法&#xff0c;供大家参考。 先使用winr打开命令行窗口。 展示所有虚拟环境 conda env list 创建虚拟环境 例如我们创建一个叫做py_sk的虚拟环境 …

JProfiler 性能分析案列——dump.hprof 堆内存快照文件分析排查内存溢出

在 windows 环境下实现。 一、配置 JVM 参数 配置两个 JVM 参数&#xff1a; -XX:HeapDumpOnOutOfMemoryError&#xff0c;配置这个参数&#xff0c;会在发生内存溢出时 dump 生成内存快照文件&#xff08;xxx.hprof&#xff09;-XX:HeapDumpPathF:\logs&#xff0c;指定生成…

SQLServer使用 PIVOT 和 UNPIVOT行列转换

在SQL Server中&#xff0c;PIVOT是一个用于将行数据转换为列数据的操作。它特别适用于将多个行中的值转换为多个列的情况&#xff0c;并在此过程中执行聚合操作。以下是关于SQL Server中PIVOT操作的详细解释和示例&#xff1a; 1、本文内容 概述语法备注关键点简单 PIVOT 示…

拒绝Token焦虑,盘点可白嫖的6款LLM大语言模型API~

上篇分享了如何从0到1搭建一套语音交互系统。 其中&#xff0c;大语言模型&#xff08;LLM&#xff09;是实现智能对话的关键所在。 很多小伙伴反应&#xff1a;本地部署 LLM 还是有门槛&#xff0c;本文将系统盘点&#xff1a;目前市面上都有哪些可以免费调用的云端API&…

华为云开发者社区活动-基于MindNLP的ChatGLM-6B聊天机器人体验

MindNLP ChatGLM-6B StreamChat 本案例基于MindNLP和ChatGLM-6B实现一个聊天应用。支持流式回复。 本活动通过配置环境&#xff0c;模型接入&#xff0c;以及gradio前端界面搭建&#xff0c;实现了聊天机器人的功能。 以下是一些体验记录&#xff1a; 有兴趣的可以通过以下链…

平台型组织的战略及OKR

本文主要探讨了在平台型组织中战略和OKR&#xff08;目标与关键结果&#xff09;的应用&#xff0c;以及如何在不同的组织架构中有效制定和执行战略。原文: Strategy and OKRs in the Platform Organization 战略&#xff1a;重要的承诺、复杂的过程 对于什么是组织的战略&…

PS通过GTX实现SFP网络通信1

将 PS ENET1 的 GMII 接口和 MDIO 接口 通过 EMIO 方 式引出。在 PL 端将引出的 GMII 接口和 MDIO 接口与 IP 核 1G/2.5G Ethernet PCS/PMA or SGMII 连接&#xff0c; 1G/2.5G Ethernet PCS/PMA or SGMII 通过高速串行收发器 GTX 与 MIZ7035/7100 开发…

openh264 帧内预测编码原理:WelsMdIntraChroma 函数

帧内色度预测编码 帧内预测的目的是利用图像中相邻像素的亮度和色度值之间的接近性来进行压缩。在H.264中&#xff0c;帧内预测包括亮度和色度的预测。色度预测模式通常是基于亮度预测模式来确定的&#xff0c;因为色度分量通常具有更高的空间冗余度。色度预测模式的选择可以基…