【JAVA-数据结构】初识集合框架

ops/2024/10/19 21:40:18/

        时隔几个月,小主又回来了,近期我们来谈谈数据结构相关内容,这部分数据结构,我们将使用JAVA进行相关讲解,感兴趣的小伙伴持续关注,防止走丢。

1. 什么是集合框架

        Java 集合框架 Java Collection Framework ,又被称为容器 container ,是定义在 java.util 包下的一组接口 interfaces和其实现类 classes 。

        其主要表现为将多个元素 element 置于一个单元中,用于对这些元素进行快速、便捷的存储 store 、检索 retrieve 、管理 manipulate ,即平时我们俗称的增删查改 CRUD 。

        例如,一副扑克牌(一组牌的集合)、一个邮箱(一组邮件的集合)、一个通讯录(一组姓名和电话的映射关系)等等

2. 集合框架的重要性

1. 开发中的使用

  • 使用成熟的集合框架,有助于我们便捷、快速的写出高效、稳定的代码
  • 学习背后的数据结构知识,有助于我们理解各个集合的优缺点及使用场景

2. 笔试及面试题

腾讯-Java后台开发面经

1. HashMap 了解不,介绍一下,如果一个对象为 key 时,hashCode 和 equals 方法的用法要注意什么?

2. HashSet 和 HashMap 的区别是什么?

3. HashMap 是线程安全的么?那需要线程安全需要用到什么?

阿里巴巴-Java后台开发面经

1. ArrayList 和 LinkedList 的区别是什么?

2. 有了解过 HashMap 的具体实现么?

3. HashMap 和 ConcurrentHashMap 哪个效率更高?

今日头条-Java后台开发面经

1. 编程题:判断一个链表是否是一个回文链表。

2. Redis 的 zset 类型对应到 java 语言中大致是什么类型?

3. hashCode 主要是用来做什么用的?

3. 背后所涉及的数据结构以及算法

3.1 什么是数据结构

        数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。

3.2 容器背后对应的数据结构

该阶段,我们主要学习以下容器,每个容器其实都是对某种特定数据结构的封装,大概了解一下,后序会给大家详细讲解并模拟实现:

1. Collection:是一个接口,包含了大部分容器常用的一些方法

2. List:是一个接口,规范了ArrayList 和 LinkedList中要实现的方法

        ArrayList:实现了List接口,底层为动态类型顺序表
        LinkedList:实现了List接口,底层为双向链表

3. Stack:底层是栈,栈是一种特殊的顺序表

4. Queue:底层是队列,队列是一种特殊的顺序表

5. Deque:是一个接口

6. Set:集合,是一个接口,里面放置的是K模型

        HashSet:底层为哈希桶,查询的时间复杂度为O(1)
        TreeSet:底层为红黑树,查询的时间复杂度为O( ),关于key有序的

7. Map:映射,里面存储的是K-V模型的键值对

        HashMap:底层为哈希桶,查询时间复杂度为O(1)

        TreeMap:底层为红黑树,查询的时间复杂度为O( ),关于key有序

3.3 相关java知识

  1. 泛型 Generic
  2. 自动装箱 autobox 和自动拆箱 autounbox
  3. Object 的 equals 方法
  4. Comparable 和 Comparator 接口

3.4 什么是算法

        算法(Algorithm):就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为输出。简单来说算法就是一系列的计算步骤,用来将输入数据转化成输出结果。

        本篇文章主要介绍一下数据结构,后面我们会用三篇文章先解决数据结构开始前的相关铺垫,大家持续关注,防止走丢。


http://www.ppmy.cn/ops/118096.html

相关文章

LeetCode 35. 搜索插入位置

LeetCode 35. 搜索插入位置 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target …

cesium的学习过程和使用案例

1.首先我们先了解下什么是cesium Cesium是一个基于JavaScript开发的开源WebGL三维地球和地图可视化库。以下是对Cesium的具体介绍: 基本概述 定义与功能:Cesium是一个用于创建世界级的3D地理空间应用程序的开源库,它利用现代Web技术如HTML5、…

lumen安装错误的解决Failed to download sebastian/recursion-context from dist

错误提示: Failed to download sebastian/recursion-context from dist: The zip extension and unzip command are both missing, skipping. The php.ini used by your command-line PHP is 解决办法: 打开php.ini(对应版本的) ;…

[atcoder abc 372 c] Count ABC Again

建议在洛谷查看。 当修改了第 i i i 个字符&#xff0c;只对第 i − 2 i - 2 i−2 到 i 2 i 2 i2 有影响。 因此先统计出开始时的 abc 个数&#xff0c;改变第 i i i 个位置后&#xff0c;对上面的区间进行修改即可。 #include<bits/stdc.h> using namespace std…

【CSS】盒子模型

width 宽度 、height 高度 、padding 内边距 、margin 外边距 ( 外边距合并、子元素外边距塌陷问题 )border 边框border-radius 圆角box-shadow 阴影overflow 溢出float 浮动 ( 父元素塌陷问题 ) 盒子模型&#xff08;Box Model &#xff09;是指在网页设计中&#xff0c;用于描…

如何配置路由器支持UDP

一、UDP协议简介 UDP是一种传输层协议&#xff0c;与TCP&#xff08;传输控制协议&#xff09;不同&#xff0c;它不需要建立连接&#xff0c;因此传输速度较快。由于UDP不需要确认数据包的接收状态&#xff0c;它适用于不需要严格数据完整性但需要低延迟的场景。 常见的UDP应…

RuoYi若依框架学习:多环境配置

在开发过程中&#xff0c;项目往往需要在不同的环境&#xff08;如开发、测试和生产&#xff09;中运行。RuoYi框架支持通过配置文件轻松实现多环境管理。以下是如何配置和使用多环境的技术分析。 1. 环境配置文件 RuoYi框架使用application-{profile}.yml文件来管理不同环境…

Linux用户管理

用户管理 在 Linux 系统中各种会存在着多个用户。我们的使用者靠用户名来区分各自登陆的账 号。如果我们的用户想要使用系统资源&#xff0c;就必须在系统中拥有合法的账号。在系统多个文 件中都保存了用户身份相关信息。 系统靠ID号区分用户&#xff08;ls -n&#xff09; …