在HashMap中使用相同的键存储多个值

时间:2014-06-27 06:11:56

标签: java hashmap

我今天接受采访,我的采访者问我如何在HashMap中存储具有相同键的多个值? 她给了我这个例子 - >如果给我一个String列表,我想把String的长度存储为键,String本身作为值。

我给了她以下解决方案,我将如何使用HashMap:

Map<Integer, ArrayList<String>> map = new HashMap<Integer, ArrayList<String>>();

整数是String的长度,ArrayList将存储该特定长度的字符串。

采访者说这是使用HashMap的一种方式,但还有另一种方法,我不需要ArrayList或任何其他数据结构。在采访中,我无法提出任何解决方案,现在经过足够的谷歌搜索,我仍然没有任何东西。谁能告诉我如何才能解决这个问题呢?

谢谢!

3 个答案:

答案 0 :(得分:8)

不使用任何数据结构的一种方法是连接值中的所有字符串。

例如

map.put(2,"rr*tt*yy");
map.put(3,"nnn*ggg*sss");
map.put(4,"ffff*dddd*jjjj");

答案 1 :(得分:0)

可能是面试官想要检查你是否知道第三方API。 有多个API可用于执行此操作。 其中一些可以找到 http://java.dzone.com/articles/hashmap-%E2%80%93-single-key-and

答案 2 :(得分:0)

一个选项是每次要将记录插入到映射中,获取String的长度,salt然后加密要用作键的String的大小。 BAM:你有一个(相当)唯一的可检索键,每个字符串都没有多少字符串连接。

请确保使用可逆加密算法。

另一种选择是生成一个UUID并将字符串的大小连接到那个。

UUID uuid = UUID.randomUUID()
String key = stringSize + "," + uuid;

这也会产生一个唯一的值,以后可以使用String.split();

来检索