| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> Java集合框架 -> 正文阅读 |
|
[数据结构与算法]Java集合框架 |
目录 ? 什么是集合框架Java 集合框架 Java Collection Framework ,又被称为容器 container ,是定义在 java.util 包下的一组接口 interfaces 和其实现类 classes 。 其主要表现为将多个元素 element 置于一个单元中,用于对这些元素进行快速、便捷的存储 store 、检索 retrieve 、管理 manipulate ,即平时我们俗称的增删查改 CRUD 。 简单来说,集合框架就是由接口,抽象类,实现类组成的,这些类和接口里面实现了数据结构。 集合框架图大致如下: 我们知道接口其实就是对一个行为的抽象,也相当于一个标准,因为大多数类都有这种特性于是将其抽象成了一个接口。 我们从上往下看,Iterable是一个增强for-each循环的接口,实现这个接口的类都能使用for-each循环进行遍历。而我们看到Map并没有实现Iterable接口,因此Map下的类都不能使用for-each循环。 至于 List是一个线性表,包括数组和链表,Queue是一个队列,set是一个集合,里面的元素不能重复。 ?其中ArrayList底层是一个顺序表,LinkList底层是一个双向链表,能表示一个双向链表、普通队列和双端队列(队头队尾都能进出元素)。stack是一个栈,priorityQueue是一个优先队列,底层是一个二叉树。Treeset底层是一个红黑树,hashset底层是一个哈希表。hashmap底层也是一个哈希表,treeMap底层也是一个红黑树。(现在只是大致了解,后续博文会详细介绍)。 Map是一个键值对,也就数所谓的<Key,Value>结构,能够存储k值和v值,而左半部分collection下的只能存储k值。 集合框架中不止这些数据结构,还提供了一些工具,例如迭代器、比较器等; collection接口前面介绍了collection下面的一些类,那现在来使用一下collection熟练熟练。 因为大多数类都实现了collection接口,因此我们可以实现向下转型,就用ArrayList吧。对此不理解的可以戳这:多态中的向下转型。
关于尖括号中的Integer类型是属于泛型,不了解的也可以戳这:泛型。 运行结果如下: ?Map接口关于Map,其实相当于一个字典,首先是创建一个字典把一个key值和一个value值存进去。 然后就可以按照key值从字典中寻找对应的value值。 ?示例代码:
?结果如下: 我们注意到插入的顺序与输出的顺序并不是相同的,这就得从哈希表的函数说起,因为一个k-v键值对值 存入map中会经过哈希函数的加工最后才存进哈希表中,因此顺序并不会相同。 示例: entryset方法: 我们观察entrySet方法的返回值是一个Set<Map.Entry<K, V>> ,这个我们先不管,之后在将哈希表时再详细介绍,现在先学会使用:
结果: ? 本文收录专栏《数据结构》。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 18:40:13- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |