HashMap getKey或添加值而不替换键

时间:2014-12-15 21:49:25

标签: java hashmap

我将不胜感激。

我想做这样的事情:

    HashMap <MyFile,ArrayList<MyFile>> hm; new ...

    if(hm.containsKey(MyFile))
        hm.put(hm.getKey(MyFile), hm.get(MyFile).add(MyFile));

所以我需要实现getKey。

我有2个目录(A,b),我想从中添加HashMap作为文件夹A中的文件的键,以及作为值的ArrayList,我将在其中保存我找到的fileInA的副本我在文件夹B中找到了。我创建了一个类MyFIle并且overrode等于我的需要。

我想实现getkey而不必遍历HashMap中的所有键。

有些人可以给我一些扩展HashMap的技巧或实现我想要的方法。

感谢

ps.我文件的结构是

     Name , size, path, typeOfFile, CRC32

我的equals()只比较size,typeOfFile和CRC32。 我的hashCode()使用与我的equals相同的变量。 所以我比较它们时的文件是相同的,但它们可能有不同的名称或路径。所以我可以轻松使用hm.containsKey(val),但我没有原始的val,我需要检索它,以便在不丢失原始文件的情况下向ListArray添加新值。

1 个答案:

答案 0 :(得分:-1)

如果我理解正确,你可以轻松使用;

  

map.put(MyFile,map.get(MyFile).add(MyFile));

HeshMap添加了适当的关键新元素。

并且不要忘记MyFile的Override hashCode() Why always override hashcode() if overriding equals())。