集合从原理的总结

1.  Set和Map都是用来查询的用的,增加   删除   包含  速度都非常的快,因为他们存放的时候进行了优化。比如HashMap就是以hash算法来存放,TreeMap就是以二叉树进行存储。而对应的HashSet的底层实现是HashMap的key的部分,TreeSet的底层实现TreeMap的key的部分。


2.  如果是自己的类,往HashSet里面放的话,就要重写hashcode方法和equals的方法,因为你自己的类,都是继承Object的hashcode和equals方法。


3.  看看HashMap的的存储方式,数组加单向链表。

3.1   当我们put(key,  value)

3.2   拿key的hashcode()计算出数组上的位置

3.3   看数组上的这个位置有没有元素,如果没有就直接放在数组里面

3.4   如果有的话,就拿key用equals链表上所有的元素key,如果相同就把老的value替换,如果不等话就放到链表的第一位置,放在第一个位置,而不是放到最后一个位置的原因是因为遵循最近使用的肯定很快又会得到使用。

3.5  原生类型的包装类和String都实现了自己的hashcode和equals方法。


4.   TreeMap的存储方式二叉树

4.1  put(key, value)

4.2  放进的每个key都要实现Comparable接口或者是在new TreeMap(Comparator) 时就传入比较器实现了Comparator接口的类。

4.3  要放到树上,肯定是需要key进行比较,所有就有4,2的步骤。

4.4   原生类型的包装类和String都实现了Comparable接口。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值