Map、Set、List集合差别及联系
发布日期:2022-02-05 04:27:52
浏览次数:2
分类:技术文章
本文共 1710 字,大约阅读时间需要 5 分钟。
Map、Set、List集合差别及联系
一、数组Array和集合的区别
- 数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型)
- JAVA集合可以存储和操作数目不固定的一组数据。
- 若程序时不知道究竟需要多少对象,需要在空间不足时自动扩增容量,则需要使用容器类 库,array不适用。
- 使用相应的toArray()和Arrays.asList()方法可以相互转换。
二、集合
集合类存放于java.util包中。
集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用(reference)。 集合类型主要有3种:set(集)、list(列表)和map(映射)。三、set(集)、list(列表)和map(映射)三者关系
四、List、Map、Set的区别与联系
一、结构特点
1、 List和Set是存储单列数据的集合,Map是存储键值对这样的双列数据的集合;
2、 List中存储的数据是有顺序的,并且值允许重复; Map中存储的数据是无序的,它的键是不允许重复的,但是值是允许重复的; Set中存储的数据是无顺序的,并且不允许重复,但元素在集合中的位置是由元素的hashcode决定,即位置是固定的(Set集合是根据hashcode来进行数据存储的,所以位置是固定的,但是这个位置不是用户可以控制的,所以对于用户来说set中的元素还是无序的)。二、实现类
1、List接口有三个实现类:
1.1 LinkedList 基于链表实现,非线程安全,链表内存是散列的,增删快,查找慢; 1.2 ArrayList 基于数组实现,非线程安全,效率高,增删慢,查找快; 1.3 Vector 基于数组实现,线程安全,效率低,增删慢,查找慢;2、Map接口有四个实现类:
2.1 HashMap 基于 hash 表的 Map 接口实现,非线程安全,高效,支持 null 值和 null 键; 2.2 HashTable 线程安全,低效,不支持 null 值和 null 键; 2.3 LinkedHashMap 是 HashMap 的一个子类,保存了记录的插入顺序; 2.4 SortMap 接口 TreeMap,能够把它保存的记录根据键排序,默认是键值的升序排序 3、Set接口有两个实现类: 3.1 HashSet 底层是由 Hash Map 实现,不允许集合中有重复的值,使用该方式时需要重写 equals()和 hash Code()方法; 3.2 LinkedHashSet 继承于 HashSet,同时又基于 LinkedHashMap 来进行实现,底层使用的是 LinkedHashMap栈
栈
栈是一种只能在一端进行插入或删除操作的线性表。(先进后出表)
java中的Stack继承Vector
实例化
Stack stack=new Stack();
判断是否为空
stack.empty()
取栈顶值(不出栈)
stack.peek()
进栈
stack.push(Object);
出栈
stack.pop();
源码:
public class StackTest{ public static void main(String[] args) { Stackstack=new Stack<>(); //1.栈是否为空 System.out.println(stack.empty()); //2.进栈push() stack.push("a"); stack.push("b"); //3.栈顶值 System.out.println(stack.peek()); //4.出栈 stack.pop(); System.out.println(stack.peek()); }}
输出:
b a转载地址:https://blog.csdn.net/weixin_43287508/article/details/86701981 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
感谢大佬
[***.8.128.20]2024年04月20日 09时47分00秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
深度学习相关好的博客分享(持续更新)
2019-04-29
tensorboard可视化使用问题解决
2019-04-29
深度学习中张量(Tensor)的理解
2019-04-29
CNN卷积神经网络简单介绍与详细搭建注释-识别mnist手写黑白数字
2019-04-29
pip相关问题解决(2)-修改源码
2019-04-29
关于安装qtpands最新版(1.04)
2019-04-29
解决ModuleNotFoundError: No module named 'matplotlib.pyplot'; 'matplotlib' is not a package
2019-04-29
关于Python继承类中的super用法
2019-04-29
经典卷积神经网络结构——LeNet-5、AlexNet、VGG-16
2019-04-29
TensorFlow猫狗大战完整代码实现和详细注释
2019-04-29
TensorFlow实现:卷积神经网络识别手势动作(有代码与演示)
2019-04-29
win10删除文件夹需要提供管理员权限(实测可用超简单方法)
2019-04-29
《面向通用人工智能的混合天机芯片架构》论文简单小结
2019-04-29
深度学习的几种权重初始化
2019-04-29
ResNet残差网络学习小结
2019-04-29