常用集合(ArrayList、Hashset、HashMap)的用法(会一直更新)

ArrayList
add 是直接将想要加入的数据加入到list中,加入之前会进行是否扩容检查。get的字面意思是获得。所以是获取想要下标的arraylist数组的值。
HashSet:储存是无序、唯一。其中是无序储存,所以不能通过get(i)来获得对象,所以set(i),get(i),remove(i),这种下标索引的方式都没。所以只能通过增强for或者迭代器遍历
常用的几种方法
增加add(null);
删除remove(news);(这是直接对象,不是索引)
对比查找(news);
清空集合clear();
获取长度size();

详细原理例子:https://blog.csdn.net/Liuxiaoyang1999/article/details/98878303?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param
其中解释了HashSet为什么是唯一的:因为add()的时候是用了HashMap.put方法,利用HashMap创建一个新对象并赋值给全局对象变量map,所以在add方法中,put方法把我们在add方法中传入的元素赋给了HashMap对象的key,而HashMap对象不能重复(put方法找到相同key的时候会覆盖旧值),因为add方法无法添加重复的对象。

Hashmap
底层是由数组+链表结构(链表负责存储数据,实现了内部的Rntry<K,V>接口)
put 方法是将键值的旧值被新值覆盖,如果没有出现键值那就直接初始化下一个链表,如果存在的话,覆盖。
get方法,遇到hash值一样返回当前索引的Node,节点不一样那就继续遍历直到相等或为null。
上述的get只能对应一个键取出其对应的值,这种方式比较局限和单一,不能全部取出来。
所以JAVA又提供了两种更厉害的取出方式。
①keySet():返回此映射中包含的键的Set视图,将map中所有的键存入Set集合,因为Set具备迭代器,所有迭代方式取出所有的键,再根据get()方法,获取每一个对应的值。
②entrySet():同时查询map的key和value,只需要查询一次,将键值对转化为Entry对象,并返回所有的Entry对象组成的Set集合。Entry对象,是一个接口泛型,定义为Entry<K,V>。它表示Map中的一个实体(一个key-value对)。接口中有getKey(),getValue方法。
看需求取,如果只需要key用①即可,没必要取value浪费开销。
更加详尽举例:
https://blog.csdn.net/qq_40262372/article/details/112669338

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万小猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值