Java高级重点知识点-13-数据结构、List集合、List集合的子类

news2024/11/15 5:59:30

文章目录

  • 数据结构
  • List集合
  • List的子类(ArrayList集、LinkedList集)

数据结构


  1. stack,又称堆栈,它是运算受限的线性表,其限制是仅允许在标的一端进行插入和删除操作,不允许在其他任何位置进行添加、查找、删除等操作。

先进后出(即,存进去的元素,要在后它后面的元素依次取出后,才能取出该元素)。

  • 压栈:就是存元素。即,把元素存储到栈的顶端位置,栈中已有元素依次向栈底方向移动一个位置。
  • 弹栈:就是取元素。即,把栈的顶端位置元素取出,栈中已有元素依次向栈顶方向移动一个位置。
  1. 队列
    队列:queue,简称队,它同堆栈一样,也是一种运算受限的线性表,其限制是仅允许在表的一端进行插入,而在表的另一端进行删除。

先进先出(即,存进去的元素,要在它前面的元素依次取出后,才能取出该元素)。

  1. 数组
    数组:Array,是有序的元素序列,数组是在内存中开辟一段连续的空间,并在此空间存放元素。

优缺点:

  • 查找元素快
  • 增删元素慢
  1. 链表
    链表:linked list,由一系列结点node(链表中每一个元素称为结点)组成,结点可以在运行时i动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。

优缺点:

  • 查找元素慢
  • 增删元素快
  1. 红黑树(一种特别的二叉树)
    二叉树:binary tree ,是每个结点不超过2的有序树(tree) 。

红黑树的约束:

  • 节点可以是红色的或者黑色的
  • 根节点是黑色的
  • 叶子节点(特指空节点)是黑色的
  • 每个红色节点的子节点都是黑色的
  • 任何一个节点到其每一个叶子节点的所有路径上黑色节点数相同

优缺点:

  • 速度特别快,趋近平衡树,查找叶子元素最少和最多次数不多于二倍

List集合

java.util.List 接口继承自 Collection 接口,是单列集合的一个重要分支

  1. List接口中常用方法
  • public void add(int index, E element) : 将指定的元素,添加到该集合中的指定位置上。
  • public E get(int index) :返回集合中指定位置的元素。
  • public E remove(int index) : 移除列表中指定位置的元素, 返回的是被移除的元素。
  • public E set(int index, E element) :用指定元素替换集合中指定位置的元素,返回值的更新前的元素。

示例代码:

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

public class ListDemo {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("hello");
        list.add("world");
        list.add("java");
        list.add("xiaohu");
        for (String o : list) {
            System.out.println(o);
        }
        System.out.println("-------------------------");
        list.add(1,"bird");
        for (String s : list) {
            System.out.println(s);
        }
        System.out.println("-------------------------");
        System.out.println(list.get(2));
        System.out.println("-------------------------");
        list.remove(4);
        for (String s : list) {
            System.out.println(s);
        }
        System.out.println("-------------------------");
        list.set(3,"xiaohu");
        for (String s : list) {
            System.out.println(s);
        }
    }
}

在这里插入图片描述
程序开始时,我们通过多态创建了一个list对象,通过调用父类中add()方法,添加了4个元素并且对元素进行了遍历,然后通过List接口中的 add(int index, E element) 方法,添加“bird”字符串到指定位置中,通过 get(int index) 获取索引为2的值(也就是world),然后通过 remove(int index) 移除了索引值为4的值(也就是xiaohu),再通过 set(int index, E element) 将索引值为3的值设置为xiaohu。

List的子类(ArrayList集、LinkedList集)

  1. ArrayList集合
    java.util.ArrayList 集合数据存储的结构是数组结构。元素增删慢,查找快
  2. LinkedList集合
    java.util.LinkedList 集合数据存储的结构是链表结构。方便元素添加、删除的集合。
  • public void addFirst(E e) :将指定元素插入此列表的开头。
  • public void addLast(E e) :将指定元素添加到此列表的结尾。
  • public E getFirst() :返回此列表的第一个元素。
  • public E getLast() :返回此列表的最后一个元素。
  • public E removeFirst() :移除并返回此列表的第一个元素。
  • public E removeLast() :移除并返回此列表的最后一个元素。
  • public E pop() :从此列表所表示的堆栈处弹出一个元素。
  • public void push(E e) :将元素推入此列表所表示的堆栈。
  • public boolean isEmpty() :如果列表不包含元素,则返回true。
 public static void main(String[] args) {
        LinkedList<String> list = new LinkedList();
        list.add("a");
        list.add("b");
        list.add("c");
        list.addLast("d");
        System.out.println(list.getFirst());
        System.out.println("-------------------------------");
        System.out.println(list.getLast());
        System.out.println("-------------------------------");
        System.out.println(list.removeFirst());
        System.out.println("-------------------------------");
        System.out.println(list.removeLast());
        System.out.println("-------------------------------");
        for (String o : list) {
            System.out.print(o + ",");
        }
        System.out.println("\n-------------------------------");
        list.pop();
        for (String o : list) {
            System.out.print(o + ",");
        }

        list.push("e");
        System.out.println("\n-------------------------------");
        for (String o : list) {
            System.out.print(o + ",");
        }
        System.out.println("-------------------------------");
        System.out.println(list.isEmpty());
    }

在这里插入图片描述

欢迎java热爱者了解文章,作者将会持续更新中,期待各位友友的关注和收藏。。。

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

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

相关文章

Verilog描述一个带有异步置位和异步清零的D触发器

1 带有异步置位和异步清零的D触发器的真值表&#xff1a; 2 Verilog代码描述 module DFF_SR(CLK, D, Rd, Sd, Q, QN);input CLK, D, Rd, Sd;output Q, QN;reg Q_DFF;always (posedge CLKor negedge Rd or negedge Sd)beginif(!Rd)Q_DFF < 1b0;else if(!Sd)Q_DFF < 1b1;e…

问题:泡泡纱、市布属()织物。 #笔记#知识分享#职场发展

问题&#xff1a;泡泡纱、市布属&#xff08;&#xff09;织物。 A.纯棉 B.化纤 C.涤棉 D.纯麻 参考答案如图所示

APP软件系统的开发流程

APP软件系统的开发是一个复杂的过程&#xff0c;需要多方面的知识和技能。建议选择专业的开发团队进行开发&#xff0c;以确保APP的质量和成功。APP软件系统的开发流程通常包括以下几个阶段。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合…

抖音直播违规规定有哪些?(直播违禁词汇总表)

全民直播的同时也有不少新手直播玩家处处碰壁,直播间没人气,直播不知道说什么甚至直播间被封。 收到直播封禁通知的朋友,轻者封禁直播账号两三天,严重着可能永久封禁直播间! 今天我们重点来说说直播间被封是怎么回事?如何避免抖音直播间被封?抖音直播间违规规定有哪些?抖音…

2024年最新机动车签字授权人考试题库。

31."简易瞬态工况法"所使用的五气分析仪的温度范图:分析系统及相关部件应在&#xff08; &#xff09;。 A.0-40℃ B.0-50℃ C.0-60℃ D.-10-40℃ 答案:A 32.稀释氧传感器环境空气量程检测时的读数值位于&#xff08; &#xff09;%vol范围之外时&#xff0c;应…

链家房屋数据爬取与预处理-大数据采集与预处理课程设计

芜湖市链家二手房可视化平台 成品展示 重点说明 1.数据特征数量和名称、数据量 数据特征数量&#xff1a;14&#xff1b; 名称&#xff1a;小区名、价格/万、地区、房屋户型、所在楼层、建筑面积/平方米、户型结构、套内面积、建筑类型、房屋朝向、建筑结构、装修情况、梯户…

Linux驱动开发笔记(十一)tty子系统及其驱动

文章目录 前言一、串口驱动框架1.1 核心数据结构1.2 数据处理流程 二、驱动编写1. 设备树的修改2. 相关API函数3. 驱动框架4. 具体功能的实现4.1 出入口函数的编写4.2 读写函数 前言 之前已经讲过应用层的应用&#xff0c;接下来我们继续进行驱动的学习。其实实际上我们很少主动…

艺术巨匠妙笔下的红酒:诗意流淌的色彩,邂逅灵魂的瞬间

在艺术的世界里&#xff0c;红酒不仅是一种饮品&#xff0c;更是艺术家们笔下的灵感之源。当那深邃的葡萄汁在画布上流淌&#xff0c;一种不同的色彩诗意便悄然绽放。今天&#xff0c;就让我们一起走进这个充满色彩与诗意的世界&#xff0c;探寻艺术大师笔下的红酒魅力&#xf…

基于AdaBoost的旋转机械故障诊断(Python)

前置文章&#xff1a; 将一维机械振动信号构造为训练集和测试集&#xff08;Python&#xff09; https://mp.weixin.qq.com/s/DTKjBo6_WAQ7bUPZEdB1TA 旋转机械振动信号特征提取&#xff08;Python&#xff09; https://mp.weixin.qq.com/s/VwvzTzE-pacxqb9rs8hEVw import…

visual studio打包QT工程发布exe安装包

一、实验环境 软件版本下载链接visual studioMicrosoft Visual Studio Community 2022 (64 位) - Current 版本 17.7.5QTv6.6.3NSISv3.10官网 或 百度云1234Windows11 二、程序准备 1、程序生成 使用 visual studio 打开工程&#xff0c;选择 Release 模式后&#xff0c;点…

【面试题】MySQL数据库

目录 什么是视图&#xff0c;视图的作用是什么&#xff1f;什么是索引&#xff1f;MySQL中有哪些类型的索引&#xff1f;简述索引设计原则&#xff1f;简述索引的数据结构&#xff1f;简述Hash 和 B 树索引的区别&#xff1f;列出MySQL中导致索引失效的情况&#xff1f;简述数据…

永洪bi里topN的设置/用法

要实现的效果&#xff1a;实现通过输入参数&#xff0c;进行图表top的排序筛选 图示&#xff1a; 筛选前&#xff1a; 输入3&#xff0c;看top3的值&#xff1a; 输入-3&#xff0c;看倒数3个的值&#xff1a; 设置步骤&#xff1a; 1️⃣&#xff1a;添加一个“文本参数组件…

干货!车间生产管理的主要内容及管理方法,建议收藏

作为一名车间主管&#xff0c;我深知车间现场管理对于整个生产流程的重要性。车间是企业生产的核心区域&#xff0c;是产品从原材料转化为成品的关键环节。因此&#xff0c;有效的车间现场管理不仅能确保生产过程的顺利进行&#xff0c;还能提高生产效率、降低成本&#xff0c;…

招聘统计关于候选人的体验

我们生活在一个由感觉驱动的世界里。企业花费大量的时间和资源来改变用户体验、员工体验和产品用户体验。在招聘中&#xff0c;最重要的是候选人的体验。面对不断变化的候选人期望和招聘技术&#xff0c;作为与组织建立强烈关系的大门&#xff0c;改善候选人的感受是一个持续的…

python无法安装scipy怎么办

python安装scipy时出现以下错误&#xff1a; from scipy.misc import imread Traceback (most recent call last):File "D:/Pyproject/qq_Spider/create_cloud.py", line 14, in <module>from scipy.misc import imread ModuleNotFoundError: No module named …

功能测试【测试用例模板、Bug模板、手机App测试★】

功能测试 Day01 web项目环境与测试流程、业务流程测试一、【了解】web项目环境说明1.1 环境的定义&#xff1a;项目运行所需要的所有的软件和硬件组合1.2 环境(服务器)的组成&#xff1a;操作系统数据库web应用程序项目代码1.3 面试题&#xff1a;你们公司有几套环境&#xff1…

IP 定位在网络安全领域的关键作用

IP 定位&#xff0c;顾名思义&#xff0c;就是通过确定网络设备所使用的 IP 地址&#xff0c;来获取其大致的地理位置信息。这一重要的技术在网络安全领域的应用范围广泛&#xff0c;且效果显著。 首先&#xff0c;IP 定位有助于快速追踪和识别网络攻击的来源。当网络遭受攻击时…

浊度传感器设备的监测控制和智慧运维

浊度传感器是一种用于测量液体中悬浮颗粒浓度从而反映液体浊度的设备。 其工作原理主要基于以下几种常见方式&#xff1a; 1. 散射光测量原理&#xff1a;当光线穿过含有悬浮颗粒的液体时&#xff0c;颗粒会使光线发生散射。传感器通过测量特定角度的散射光强度来确定浊度。散…

机器学习课程复习——线性回归

Q&#xff1a;回归和分类的区别&#xff1f; 回归是连续的&#xff0c;分类是离散的 Q:用最小二乘法对线性回归模型进行参数估计思路 例题

黑马程序员-瑞吉外卖-前六章

黑马程序员瑞吉外卖 文章目录 1、开发环境搭建1.1 数据库环境1.2 maven项目搭建1.2.1 新建项目1.2.2 整合MyBatisPlus1.2.3 整合Druid1.2.4 配置文件application.yml1.2.5 尝试启动项目1.2.6 将前端静态页面引入到项目中 2、 后台系统登录功能2.1 需求分析2.2 代码开发2.2.1 创…