| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> List、Set、Map 接口及脚下集合之间的区别 -> 正文阅读 |
|
[数据结构与算法]List、Set、Map 接口及脚下集合之间的区别 |
首先,我们得知道集合,被人开发出来,是为什么?又或者说用来干什么? 我们要知道一点,如果需要装载一些数据,数组是不是就已经可以满足我们的要求了。但我们,需要考虑一点,数组的性质:可以存放多个数据,数组大小必须一开始就定义,并且无法改变,这就是数组相对来说的一个缺陷。 然后,集合就随之而来了,大小又或者说长度可以不定义,也就是说可以改变,从这点上,集合比数组已经有那么一点点优势了。 接下来,我们从下面这张结构图来解析一下三种集合之间依赖关系。 List、Set接口是通过继承Collection顶级接口(也可以说是容器)再由底下的集合实现类来实现的,而Map接口则是单独衍生出来的个体。 然后,通过各个集合的特点来解析一下。 List接口:数据保存有下标(有序)、数据可重复(数据不唯一)、底下分为两种数据类型:动态数组和链表 Set接口:数据不可重复(数据唯一)、底下为两种数据类型:哈希表和二叉树 Map接口:保存数据为键值对,一个键对应一个值(键不可重复),一个值可以对应多个键(值可以重复)、底下为两种数据类型:哈希表和链表 ?小总结:从这里可以看出,三种接口,每个用法不一样,作用也不一样。 List:ArrayList,LinkedList的区别? ????????????????从数据结构上来看:ArrayList动态数组,LinkedList链表 ????????????????而这两个各自擅长的领域:ArrayList:查询快???????LinkedList:增删改效率快 ?ArrayList和Vector有什么区别????????????????ArrayList线程不安全,速度快 ???????????????Vector线程安全,速度慢 ?ArrayList和LinkedList的底层数据结构是什么????????????????ArrayList 动态数组 ???????????????LinkedList 链表 ArrayList默认大小是多少,是如何扩容的????????????????默认大小:10 ???????????????扩容因子:1.5 ?ArrayList和LinkedList的区别?分别用在什么场景????????????????ArrayList 查询效率高 ???????????????LinkedList(双向链表) 增删改效率高 ?LinkedList的一些基本方法:? ? ??????????????????addFirst(); 添加在第一个 ????????????????addLast(); 添加在最后一个 ????????????????getFirst(); 得到第一个 ????????????????getLast(); 得到最后一个 ????????????????removeFirst(); 移除第一个 ????????????????removeLast(); 移除最后一个 Set:??????????????HashSet : 基于哈希表??无序(存入的顺序和取出的顺序不一致) ??????????????TreeSet : 基于二叉树??有序(存入的内部数据会根据规则排序) HashSet 如何判断一个元素是否重复了???????????????先判断hash值在当前的集合中是否存在了 HashSet 底层数据结构 :?? ? ? ? ? ? ??HashMap(哈希表) TreeSet两种排序:????????????? 自然排序 : 里面的对象具备排序的方法 Comparable ??????????????选择器排序 自定义规则排序 Comparator ??????????????选择器优先级>自然排序 Map:Map的特点?
?最后分享一段小代码,用(HashMap)求字符串中字符出现的次数
PS:才疏学浅,如若大佬看到有错误,敬请指导,吾辈必虚心接受。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/25 20:22:26- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |