Collection Framework And The Data Structure BehindIt - 集合框架即背后的数据结构 - Java - 细节狂魔

也就是说以后用的时候,在Java中不用我们自己去实现栈,列表,顺序表等操作,直接使用Java中写好的。直接拿过来用就对了。

那么集合框架的集合其实就是Java写好的一些数据结构,所以我们就需要去了解一下每一个集合,它背后的数据结构是什么。

最后框架又是什么:顾名思义,就像是有一个大架子,东西分开摆放,具有层次感。

结合来说:集合框架 就是 每一种集合,它都是一定关系和关联的。


在看来一下,java集合框架的客观观点

==================================================================================

Java 集合框架 Java Collection Framework ,又被称为容器 container ,是定义在 java.util 包下的一组

接口 interfaces 和其实现类 classes 。

其主要表现为将多个元素 element 置于一个单元中,用于对这些元素进行快速、便捷的存储 store 、检索

retrieve 、管理 manipulate ,即平时我们俗称的增删查改 CRUD


解析


集合框架 是定义在 java.util 包下的一组接口和实现类,也就是说:我们以后使用集合,都需要导入 java.util 包。集合有很多,那么说 util 包下有很多集合类。还有一些接口和实现类。


类和接口总览 与 详解

==========================================================================

在这里插入图片描述

在这里插入图片描述

面向对象的编程(三个常用接口)

在这里插入图片描述


Java 集合框架的优点及作用

==============================================================================

使用成熟的集合框架,有助于我们便捷、快速的写出高效、稳定的代码

学习背后的数据结构知识,有助于我们理解各个集合的优缺点及使用场景


笔试及面试题(这里先了解一下,面试会被问到那些问题)

=========================================================================================

腾讯-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 主要是用来做什么用的?

别着急,后面的博客,都慢慢讲到的。


Collection 接口

============================================================================

在这里插入图片描述

实战


注意:

Collection是一个接口,不是一个类,所以不要傻里傻气的直接就去new。

接口是不能实例化的。

下面我们 ArrayList 实现类来验证Collection接口的功能。


功能1 - boolean add(E e) - 将元素 e 放入集合中 - E 是泛型指定的数据类型


在这里插入图片描述

现在,我们不想它这么这样,来者不拒。我们想要它指定放入一个数据类型的数据。

来看看怎么做!

在这里插入图片描述


clear功能【清除集合中的所有元素】   |  isEmpty功能【判断集合是否没有任何元素,俗称空集合】


在这里插入图片描述


remove功能【如果元素e出现在集合中,删除第一个】  |   size功能【返回集合中的元素个数】


remove 功能在这里插入图片描述

size功能

在这里插入图片描述


toArray 功能:将集合中所有元素转换成数组


在这里插入图片描述

但是!如果我们想用一个String类型的数组去接收返回来数组会出现问题,即使强转了类型

在这里插入图片描述

可参考 这篇文章数据类型和运算符,通过目录找到 标题为 类型转换,点过去,自行参考。


Map 接口

=====================================================================

在这里插入图片描述

选择对应的包地下Map,别粗心!

在这里插入图片描述

进入Map,观察其内部实现情况

在这里插入图片描述

下面通过实现Map接口功能,来一部部理解这两个参数(我们主要了解HashMap,因为它用的多,而且Hash 和 Treee 的功能几乎没有区别)


使用 put 功能 - 将指定的 k - v 放入Map   |   使用 get功能 - 根据指定的 k 查找对应的 v


在这里插入图片描述


使用 getOrDefault功能 - 根据指定的 k 查找对应的 v,没有找到用默认值代替


在这里插入图片描述


containskey [判断是否包含key值]  |   containsValue[判断是否包含 value值]


在这里插入图片描述


entrySet()方法 - 将所有键值对返回。


在这里插入图片描述

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助

因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
sTNLZ-1715557405768)]

[外链图片转存中…(img-Ee89AC0Z-1715557405769)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值