IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> Java的List,Set和Map的理解和区别: -> 正文阅读

[数据结构与算法]Java的List,Set和Map的理解和区别:

1.List和Set是存储单列数据的集合,Map是存储键值对这样的双列数据的集合。

2.List,Set和Map的区别:

? ? List:中存储的数据是有顺序的,并且值是允许重复的。

? ?Set:中存储的数据是无序的,并且值是不允许重复的,但是元素在集合中的位置是由hashcode? ? ? 决定的,即存进去的位置是固定的。

? ? Map:中存储的数据是无序的,它的键是不允许 重复的,它的值允许重复。

3.List的接口有三个实现类:

? ? ? ? (1).LinkedList:基于链表实现的,链表内存是散列的,增删快,查询慢。

? ? ? ? (2).ArrayList:基于数组实现的,非线程安全的,效率高,增删慢,查询快。

? ? ? ? (3).Vector:基于数组实现 的,线程安全的,效率低,增删慢,查找快。

4.Set接口有两个实现类:

? ? ? ? (1).hashSet:底层是由HashMap实现的,不允许集合中有重复的值,使用该集合时需要重

????????????写equals()和hashcode()方法。?

? ? ? ? (2).LinkedHashSet:继承与HashSet,同时又基于LinkedHashMap来进行实现,底层使用的

?????????????是LinkedHashMap。

5.Map接口有四个实现类:

? ? ? ? (1).HashMap:基于hash表的Map接口实现,非线程安全,高效,支持null值和null键。

? ? ? ? (2).HashTable:线程安全,低效,不支持null值和null键。

? ? ? ? (3).LinkedHashMap:是Hash的一个子类,保存了记录的插入顺序。

? ? ? ? (4).TreeMap:基于二叉树实现,能够把它保存的记录根据键排序,默认是键值的升序排序。

6.ArrayList和LinkedList的区别:

ArrayList:

? ? ? ? (1).底层是由数组实现的,非线程安全的,建议单线程时使用,多线程中可以选择Vector。

? ? ? ? (2)..对于随机访问get和set,ArrayList通过数组下标快速查找,效率高。

? ? ? ? (3).?对于增加和删除时,因为是数组的数据结构,要移动数组里的元素,效率低;查询修改效率高。

LinkedList:

? ? ? ? (1).底层是由双向链表实现的,线程安全的。

? ? ? ? (2)..对于随机访问get和set,LinkedList要移动指针,从前往后找,效率低。

? ? ? ? (3).对于增加和删除时,效率高,查询修改效率低。

7.hashMap的底层理解:

? ? ? ?(1). 存储结构为:数组+链表+红黑树(jdk1.8以后有的),添加红黑树的目的是提高效率。

? ? ? ? (2).hashMap是非线程安全的,只是用于单线程环境下,多线程环境下可以采用concurrent并发包下的concurrentHashMap。

? ? ? ? (3).HashMap的特性:? ?存储方式是键值对,实现快速存取数据;允许null键/值;非同步;不保证有序(比如插入的顺序)。实现map接口

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-12-07 12:17:52  更:2021-12-07 12:19:35 
 
开发: 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 14:36:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码