Java学习—集合

1.什么叫做集合?
答:集合是一种存储空间可变的存储模型。与数组不同的是,数组一旦被初始化以后,数组的存储空间是不可变的。因此相比较来说,集合更加灵活。
2.在java中常用的集中集合类型:List、Set、Map
3.集合之间的具体关系,相互之间的区别,则是我们需要认真探索的,这也是我们面试java岗位面试官经常询问我们的问题。
(1)集合类的体系图:(ps:这里参考一下之前看到过的一张图)

在这里插入图片描述
单列和双列什么意思呢?
我自己理解的是相当于我们要把1,2,3这三个数存储在集合里面,对于单列来说,我们就是把1,2,3直接存储到集合里面,而对于双列而言,我们则是要按键值对的形式进行存储,(1,1),(2,2),(3,3)。简单理解,如果有大佬能理解的比较深,欢迎评论区指导一下。
(2)从上图并且结合我们日常开发使用的其实就是List、Set、Map下的各种子类。因此我们分别具体探讨每一种的具体用法。
》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
①List主要记住List是一个有序集合、可以存储允许重复的元素、有索引
》有序集合,可以精确控制列表中每个元素的插入位置。通过整数索引获取列表中的元素。
特有方法:add、remove、set、get

》》》一、LinkedList与ArrayList的区别 :
如果你是计算机专业的话,就相当于数据结构中的数组与链表的区别,只要记住数组集合的优点是数据查询快、插入数据和删除数据慢,与之相反,链表则是数据的删除和添加操作快,而数据查询速度慢,这与数组和链表底层的逻辑相关。
在工作当中,例如频繁的进行查看操作,则可以用数组集合,若是频繁的进行添加和删除操作,则可以用链表。

》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
Set 正好与List相反,元素存取无序,没有索引,不能重复存储元素。
Tips:对于不能重复存取元素这一点可以用到元素去重,比较好用,但是只是一个方法,如果有实践能力的话,建议还是自己手写一份去重的小算法。
面试经常提问的关于Set不能重复存储元素的底层逻辑?
其实在这里主要借助了哈希表(散列表):数组+链表/红黑树。如果这里不了解的话可以去网上查找一下关于这些概念。
(第一次听到哈希表还有疑惑了一下,查了一下原来哈希表就是散列表)

》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
Map 是双列集合,也就是属于键值对形式的结合,注意键不可以重复,值可以重复
特有方法:put、remove、clear、get、keySet(获取所有的键)、values(获取所有的值)
注意点:在这里与前面的循环遍历有所不同:要理解Map的循环遍历模式
在这里提一个小问题:Map中已知Key的值,如何改Value的值?
其实很简单;就重新put一个键值相同,key值不同的数据,然后后面的会覆盖掉前面的数据。这样就可以达到修改key值的操作,这样来说更加简单一点。

》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
在我们参加工作之后,我们可能面临更多的集合的嵌套使用:
例如HashMap中嵌套ArrayList可用于对集合进行分类。
ArrayList嵌套HashMap一般用于将多个键值对集合进行汇总。
HashMap嵌套HashMap一般用于将多个键值对集合进行分类,并设置分类的属性。
多层嵌套一般用于需要多层分类归纳的情况。这一部分参考:https://blog.csdn.net/weixin_40017062/article/details/116530169

掌握这些基本上集合的基本操作已经差不多了,但是前几天了解了Stream流的一些使用,感觉更加方便了,这里给大家一个指向标,这篇文章写得不错,大家可以去看一下,以后有时间,我也要写一篇关于stream流的使用。好的,就写到这里,如果有问题,欢迎大家评论区指正。
Stream流的使用——https://blog.csdn.net/weixin_45082647/article/details/107001387

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值