最近在做作业的时候有个同学突然问我,HashMap里面的key是唯一的value不唯一,虽然在put的时候会将key去重,但是出现了一个问题,那就是我之前的value被覆盖了呀,于是我们就一起讨论,
首先我的第一想法是将问题扼杀在put之前,也就是来一个判断,如果存在相同的key就不添加了。但是这种方法好像需要从键盘接收一个key,与之前的题意有点出入。问题就出现在我既添加了,但是也不覆盖,而我则是不让添加。
后来我又想了一个法子,那就是你添加就添加呗,你不是把我的value给覆盖了嘛,那我先找个找个容器把我之前的value给保存起来,如果你小子把我的value给赶走了,嘿嘿~~~我再把你给改回来!我同学说我这个想法有点脱裤子放屁的感觉……
于是乎,我开始了我长达两个小时的思考,既然put方法是HashMap提供的,它里面在put的时候肯定是先做了约定了的。
所以问题可想而知,我既要put,又要不覆盖,那我只能重写put方法..............
那说干就干,重写你是不是得了解别人是咋做的,你才好顺着他的思路做一些坏事~嘿嘿~那就不用我说了吧,该干啥,当然是看原码了!好家伙,不看不知道,一看我就SuanQ了,盘根错节,那咱也不是怕事的人,干就完事了。今天不是你死就是我活!
定义一个类MyHashMap继承了HashMap,然后重写里面的put方法:
那我都重写了,我就不用你HashMap了,你我自己开个小灶,就用自己的MyHashMap
最后,小编想说的就是,当你觉得不可思议的时候,那就是别人的不可思议你不理解(都是原码犯的错~~)