当前位置: 首页 > news >正文

数据结构复习1

1、什么是集合?

就是一组数据的集合体,就像篮子装着苹果、香蕉等等,这些“水果”就代表数据,“篮子”就是这个集合。

集合的特点:

集合用于存储对象。

对象是确定的个数可以用数组,如果不确定可以用集合,因为集合的长度是可以变化的。

集合和数组的区别:

数组的长度是固定的,集合的长度是可变的。

数组可以存储基本数据类型,也可以存储引用数据类型,而集合只能存储引用数据类型。

2、什么是集合框架?

就像是一个“工具箱”,里面装满了这种“容器”,这些“容器”都有自己的用途和特点。

(List、Set、Map)

3、什么是接口?

就是一种规范,规定了某个对象必须实现哪些方法,但不必关注如何具体实现,就像是去餐馆里点菜,只要点想要的菜,不需要知道菜是具体怎么做的。

4、什么是算法?

在一个实现了集合框架的接口的对象上完成某种有用的计算方法。

5、什么是数据结构?

就是容器中存储数据的方式。

使用一个体系的原则:参阅顶层内容,建立底层对象。

6、使用集合框架的好处

容量自增长。

提供了高性能的数据结构和算法。

允许不同API之间互相操作。

可以方便地扩展或改写集合。

通过使用JDK(Java开发工具包自带的集合类,可以代码维护和学习新API的成本。

7、常用的集合类有哪些?

常用的集合类主要分为两大类:实现Collection接口的集合类和实现Map接口的映射类。

Collection接口的子接口包括:List接口和Set接口。

List接口的实现类主要有:ArrayList、LinkedList、Vector等等。

Set接口的实现类主要有:HashSet、LinkedHashSet、TreeSet等等。

Map接口的实现类主要有:HashMap、LinkedHashMap、TreeMap等等。

8、List、Set、Map的区别

List:一个有序容器,可以存储重复元素,可以插入多个null元素,元素都有索引。

Set:一个无序容器,不可以存储重复元素,只允许插入一个null元素,必须确保元素的唯一性。

Map:是一个键值对集合,存储键和值之间的映射。Key无序,唯一;value不要求有序,可以不唯一。

9、集合框架底层数据结构

List接口:

ArrayList:Object数组,当添加或删除元素时,如果数组满了或者有空余空间,ArrayList会自动调整数组大小。

Vector:Object数组,线程安全。

LinkedList:双向链表,在开始和结束处添加或删除元素会非常快。

Set接口:

HashSet:无序、唯一,基于HashMap实现的,底层采用HashMap实现。

LinkedHashSet:和HashSet差不多,但它还有一个双向链表用来记录元素的插入顺序,所以遍历LinkedHashSet时,元素会按照被添加的顺序出现。

TreeSet:有序、唯一,通过红黑树来实现的(平衡二叉树)。

Map接口:

HashMap:在JDK1.8之前,它主要是由数组和链表组成的,数组是HashMap的主体,链表则主要是为了解决哈希冲突而存在的。从JDK1.8开始,如果链表太长(默认超过8个元素),就会转换为红黑树来优化性能。

LinkedHashMap:增加了一条双向链表,使得可以保持键值对的插入顺序。

HashTable:和HashMap类似,线程安全。

TreeMap:基于红黑树实现的。

10、哪些集合类是线程安全的?

Vector、Stack(堆栈类,先进后出)、HashTable、Enumeration(枚举,相当于迭代器)

相关文章:

数据结构复习1

1、什么是集合? 就是一组数据的集合体,就像篮子装着苹果、香蕉等等,这些“水果”就代表数据,“篮子”就是这个集合。 集合的特点: 集合用于存储对象。 对象是确定的个数可以用数组,如果不确定可以用集合…...

订单管理系统需求规范

1. 引言 1.1 目的 本文档旨在明确描述订单管理系统的功能、非功能性需求以及约束条件,以指导系统的分析、设计、开发、测试和部署。 1.2 范围 本系统将支持在线订单处理,从客户下单到完成配送的全过程管理,包括库存管理、支付处理、订单跟…...

swiftui使用ScrollView实现左右滑动和上下滑动的效果,仿小红书页面

实现的效果如果所示,顶部的关注用户列表可以左右滑动,中间的内容区域是可以上下滚动的效果,点击顶部的toolbar也可以切换关注/发现/附近不同页面,实现翻页效果。 首页布局 这里使用了NavigationStack组件和tabViewStyle样式配置…...

深入理解并使用 MySQL 的 SUBSTRING_INDEX 函数

引言 在处理字符串数据时,经常需要根据特定的分隔符来分割字符串或提取字符串的特定部分。MySQL 提供了一个非常有用的函数 SUBSTRING_INDEX 来简化这类操作。本文将详细介绍 SUBSTRING_INDEX 的使用方法、语法,以及通过实际案例来展示其在数据库查询中…...

elementUI在手机端使用遇到的问题总结

之前的博客有写过用vue2elementUI封装手机端选择器picker组件,支持单选、多选、远程搜索多选,最终真机调试的时候发现有很多细节样式需要调整。此篇博客记录下我调试过程中遇到的问题和解决方法。 一、手机真机怎么连电脑本地代码调试? 1.确…...

【初阶数据结构】5.栈和队列

文章目录 1.栈1.1 概念与结构1.2 栈的实现2.队列2.1 概念与结构2.2 队列的实现3.栈和队列算法题3.1 有效的括号3.2 用队列实现栈3.3 用栈实现队列3.4 设计循环队列 1.栈 1.1 概念与结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操…...

高通Android 12 设置Global属性为null问题

1、最近在做app调用framework.jar需求&#xff0c;尝试在frameworks/base/packages/SettingsProvider/res/values/defaults.xml增加属性 <integer name"def_xxxxx">1</integer> 2、在frameworks\base\packages\SettingsProvider\src\com\android\provide…...

Xcode代码静态分析:构建无缺陷代码的秘诀

Xcode代码静态分析&#xff1a;构建无缺陷代码的秘诀 在软件开发过程中&#xff0c;代码质量是至关重要的。Xcode作为Apple的官方集成开发环境&#xff08;IDE&#xff09;&#xff0c;提供了强大的代码静态分析工具&#xff0c;帮助开发者在编写代码时发现潜在的错误和问题。…...

Qt各个版本安装的保姆级教程

文章目录 前言Qt简介下载Qt安装包安装Qt找到Qt的快捷方式总结 前言 Qt是一款跨平台的C图形用户界面应用程序开发框架&#xff0c;广泛应用于桌面软件、嵌入式软件、移动应用等领域。Qt的强大之处在于其高度的模块化和丰富的工具集&#xff0c;可以帮助开发者快速、高效地构建出…...

数学建模--优劣解距离法TOPSIS

目录 简介 TOPSIS法的基本步骤 延伸 优劣解距离法&#xff08;TOPSIS&#xff09;的历史发展和应用领域有哪些&#xff1f; 历史发展 应用领域 如何准确计算TOPSIS中的理想解&#xff08;PIS&#xff09;和负理想解&#xff08;NIS&#xff09;&#xff1f; TOPSIS方法在…...

Springboot开发之 Excel 处理工具(三) -- EasyPoi 简介

引言 Springboot开发之 Excel 处理工具&#xff08;一&#xff09; – Apache POISpringboot开发之 Excel 处理工具&#xff08;二&#xff09;-- Easyexcel EasyPoi是一款基于 Apache POI 的高效 Java 工具库&#xff0c;专为简化 Excel 和 Word 文档的操作而设计。以下是对…...

【BUG】已解决:python setup.py bdist_wheel did not run successfully.

已解决&#xff1a;python setup.py bdist_wheel did not run successfully. 目录 已解决&#xff1a;python setup.py bdist_wheel did not run successfully. 【常见模块错误】 解决办法&#xff1a; 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主…...

Java 中如何支持任意格式的压缩和解压缩

&#x1f446;&#x1f3fb;&#x1f446;&#x1f3fb;&#x1f446;&#x1f3fb;关注博主&#xff0c;让你的代码变得更加优雅。 前言 Hutool 是一个小而全的Java工具类库&#xff0c;通过静态方法封装&#xff0c;降低相关API的学习成本&#xff0c;提高工作效率&#xf…...

从零开始实现大语言模型(八):Layer Normalization

1. 前言 Layer Normalization是深度学习实践中已经被证明非常有效的一种解决梯度消失或梯度爆炸问题,以提升神经网络训练效率及稳定性的方法。OpenAI的GPT系列大语言模型使用Layer Normalization对多头注意力模块,前馈神经网络模块以及最后的输出层的输入张量做变换,使shap…...

<数据集>混凝土缺陷检测数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;7353张 标注数量(xml文件个数)&#xff1a;7353 标注数量(txt文件个数)&#xff1a;7353 标注类别数&#xff1a;6 标注类别名称&#xff1a;[exposed reinforcement, rust stain, Crack, Spalling, Efflorescence…...

【LabVIEW作业篇 - 3】:数组相加、for循环创建二位数组、数组练习(求最大最小值、平均值、中位数、提取范围内的数据、排序)

文章目录 数组相加for循环实现直接使用加函数 for循环创建二位数组数组练习 数组相加 要求&#xff1a;用两种方法实现两个数组相加 for循环实现 在前面板中分别创建两个数值类型的一维数组&#xff0c;并设置相应的值&#xff0c;然后在程序框图中创建一个for循环&#xff…...

Unity动画系统(4)

6.3 动画系统高级1-1_哔哩哔哩_bilibili p333- 声音组件添加 using System.Collections; using System.Collections.Generic; using UnityEngine; public class RobotAnimationController : MonoBehaviour { [Header("平滑过渡时间")] [Range(0,3)] publ…...

React基础学习-Day08

React基础学习-Day08 React生命周期&#xff08;旧&#xff09;&#xff08;新&#xff09;&#xff08;函数组件&#xff09; &#xff08;旧&#xff09; 在 React 16 版本之前&#xff0c;React 使用了一套不同的生命周期方法。这些生命周期方法在 React 16 中仍然可以使用…...

Flowable的学习一

今日项目用到了Flowable。简单记录下。 学习中 参考了网上资料&#xff1a; 工作流-Activiti7-基础讲解_activity工作流-CSDN博客 https://juejin.cn/post/7158342433615380517 flowable实战&#xff08;九&#xff09;flowable数据库表中流程实例、活动实例、任务实例三者…...

django-vue-admin项目运行

文本主要对django-vue-admin项目进行了简要介绍&#xff0c;并且对前后端进行了源码安装和运行。在此基础上可作为管理系统二次开发的基础框架。 一.django-vue-admin简介和安装 1.简介 django-vue-admin项目是基于RBAC模型权限控制的中小型应用的基础开发平台&#xff0c;采…...

PLC编程入门学习路径

PLC编程入门学习路径基础概念理解PLC&#xff08;可编程逻辑控制器&#xff09;是一种工业自动化控制设备。需要理解其工作原理、硬件组成&#xff08;CPU、I/O模块、电源等&#xff09;以及常见的品牌&#xff08;如西门子、三菱、欧姆龙&#xff09;。编程语言学习PLC常用编程…...

Python轻量级Web框架fws:从核心原理到RESTful API实战

1. 项目概述&#xff1a;一个轻量级、可扩展的Web服务框架在构建现代Web应用时&#xff0c;我们常常面临一个选择&#xff1a;是使用功能全面但可能略显臃肿的成熟框架&#xff0c;还是从零开始&#xff0c;只为满足特定需求而构建一个精简的解决方案&#xff1f;前者提供了开箱…...

WarcraftHelper 2024:魔兽争霸3终极优化指南

WarcraftHelper 2024&#xff1a;魔兽争霸3终极优化指南 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为《魔兽争霸3》在现代电脑上运行卡顿、画…...

解决ClaudeCode频繁封号与Token不足的Taotoken替代方案

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 解决ClaudeCode频繁封号与Token不足的Taotoken替代方案 对于依赖Claude Code这类编程助手工具的开发者而言&#xff0c;访问不稳定…...

从零到一:深入拆解 I/O 多路复用的前世今生与实战选型

1. 从单线程阻塞到多路复用&#xff1a;I/O模型的进化史 第一次写网络程序时&#xff0c;你可能遇到过这样的场景&#xff1a;服务器在accept()一个客户端连接后&#xff0c;整个程序就像被冻住一样&#xff0c;直到这个客户端发送数据才能继续运行。这就是最原始的阻塞I/O模型…...

物联网项目实战:在Ubuntu 20.04上快速部署Mosquitto MQTT Broker(含客户端测试)

物联网开发实战&#xff1a;Ubuntu 20.04下Mosquitto MQTT Broker的高效部署与全链路测试 在智能家居和工业物联网项目中&#xff0c;设备间的实时通信往往面临网络不稳定、硬件资源有限等挑战。MQTT协议凭借其轻量级和发布/订阅模式&#xff0c;成为连接传感器与云端的最优解。…...

基于Fabric.js与Next.js的浏览器端视频编辑器开发实战

1. 从零到一&#xff1a;在浏览器里造一个视频编辑器几年前&#xff0c;当我第一次尝试在网页上做视频剪辑时&#xff0c;感觉就像在用瑞士军刀盖房子——工具很多&#xff0c;但都不趁手。市面上的在线编辑器要么功能简陋&#xff0c;要么就是“黑盒”操作&#xff0c;你根本不…...

从MWC 2016看5G与物联网:技术演进、产业博弈与生态构建

1. 从巴塞罗那看2016年移动通信的十字路口 时间回到2016年初&#xff0c;如果你身处通信行业&#xff0c;那么2月底的日程表上&#xff0c;巴塞罗那的“移动世界大会”绝对是一个绕不开的焦点。那不是一个普通的展会&#xff0c;更像是一个行业在技术迭代、市场转型和地缘政治多…...

突破性能瓶颈:深入理解 JavaScript TypedArray

&#x1f680; 突破性能瓶颈&#xff1a;深入理解 JavaScript TypedArray &#x1f914; 为什么普通 Array 不够用&#xff1f; 在 JavaScript 中&#xff0c;普通的 Array 是一个非常灵活但“沉重”的对象&#xff1a; 动态类型&#xff1a;它可以同时存放数字、字符串、对…...

ARM A64指令集架构解析与优化实践

1. A64指令集架构概述A64指令集作为ARMv8-A架构的64位执行状态核心&#xff0c;采用固定32位长度编码设计&#xff0c;这种设计在指令获取和流水线处理上具有显著优势。与传统的变长指令集相比&#xff0c;固定长度编码使得指令预取和译码阶段更加高效&#xff0c;尤其适合现代…...