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

发布时间:2022-06-29 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Collection Framework And The Data Structure BehindIt - 集合框架即背后的数据结构 - Java - 细节狂魔脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

文章目录

  • 首先了解集合框架,数据结构 是什么?
  • 在看来一下,java集合框架的客观观点
    • 解析
  • 类和接口总览 与 详解
  • Java 集合框架的优点及作用
  • 笔试及面试题(这里先了解一下,面试会被问到那些问题)
    • 腾讯-Java后台开发面经
    • 阿里巴巴-Java后台开发面经
    • 今日头条-Java后台开发面经
  • Collection 接口
    • 实战
    • 功能1 - boolean add(E e) - 将元素 e 放入集合中 - E 是泛型指定的数据类型
    • clear功能【清除集合中的所有元素】   |  iSEMpty功能【判断集合是否没有任何元素,俗称空集合】
    • remove功能【如果元素e出现在集合中,删除第一个】  |   size功能【返回集合中的元素个数】
    • toArray 功能F1a;将集合中所有元素转换成数组
  • Map 接口
    • 使用 put 功能 - 将指定的 k - v 放入Map   |   使用 get功能 - 根据指定的 k 查找对应的 v
    • 使用 getOrDefault功能 - 根据指定的 k 查找对应的 v,没有找到用默认值代替
    • containskey [判断是否包含key值]  |   containsValue[判断是否包含 value值]
    • Set

首先了解集合框架,数据结构 是什么?

集合框架,我们可能还不了解。但是数据结构,想比大家都有一定的了解:数据结构就是 描述和组织数据的一种方式。 在我们学习中,所知道 的 二叉树,栈,队列等这些,在Java中都被封装起来了。 也就是说以后用的时候,在Java中不用我们自己去实现栈,列表,顺序表等操作,直接使用Java中写好的。直接拿过来用就对了。 那么集合框架的集合其实就是Java写好的一些数据结构,所以我们就需要去了解一下每一个集合,它背后的数据结构是什么。 最后框架又是什么:顾名思义,就像是有一个大架子,东西分开摆放,具有层次感。 结合来说:集合框架 就是 每一种集合,它都是一定关系和关联的。


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

Java 集合框架 Java Collection Framework ,又被称为容器 container ,是定义在 java.util 包下的一组 接口 interfaces 和其实现类 classes 。 其主要表现为将多个元素 element 置于一个单元中,用于对这些元素进行快速、便捷的存储 Store 、检索 retrieve 、管理 manipulate ,即平时我们俗称的增删查改 CRUD


解析

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


类和接口总览 与 详解

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

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

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

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


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 Framework And The Data Structure BehindIt - 集合框架即背后的数据结构 - Java - 细节狂魔

实战

注意:  Collection是一个接口,不是一个类,所以不要傻里傻气的直接就去new。 接口是不能实例化的。   下面我们 ArrayList 实现类来验证Collection接口的功能。


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

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

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

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


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

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


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

remove 功能

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

size功能

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


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

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

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

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

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


Map 接口

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

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

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

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

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

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


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

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


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

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


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

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


Set<;map.Entry<k,v>> entrySet()方法 - 将所有键值对返回。

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


前面例子都是以HashMap来讲解,其实HashMap 和 TreeMap 并没有多大区别。要说区别就是 TreeMap 句排序的功能。

实例

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

你只需要记住, HashMap 一定是无序的,TreeMap 一定是有序的。且两者都不受put数据的先后顺序的影响。HashMap 是根据它自己的哈希函数得出的哈希值来进行存储数据,而TreeMap 是通过某种比较大小的规则进行排序的。

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

现在,你不会对HashMap 和 TreeMap 的谁有序,谁有无序有疑惑了吧! Hash 无序,Tree有序。这一点请记住。


实现类

具体的某个接口,由那些类实现了

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


简略表格

为了以万一,怕你们当中有人钻牛角尖,事先说明,上面那个图,其实下面这个图的情况

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

现在再来看这个表

interface顺序表链表红黑树哈希表
SetTreeSetHashSet
ListArrayListLinkedList
QueueLinkedListPRiorITyQueue
DequeLinkedList
MapTreeSetHashSet

至于 PriorityQueue 和 堆 的关系:    队列具有先进先出的特性,而优先级队列是按照优先级来进行处理。即:优先级队列的出队列操作不是直接将队头元素出队列,而是把队列中优先级最高的元素出队列。要选出优先级最高的元素则可以借助堆来完成。


本文结束

脚本宝典总结

以上是脚本宝典为你收集整理的Collection Framework And The Data Structure BehindIt - 集合框架即背后的数据结构 - Java - 细节狂魔全部内容,希望文章能够帮你解决Collection Framework And The Data Structure BehindIt - 集合框架即背后的数据结构 - Java - 细节狂魔所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。