我今天接受采访,我的采访者问我如何在HashMap中存储具有相同键的多个值? 她给了我这个例子 - >如果给我一个String列表,我想把String的长度存储为键,String本身作为值。
我给了她以下解决方案,我将如何使用HashMap:
Map<Integer, ArrayList<String>> map = new HashMap<Integer, ArrayList<String>>();
整数是String的长度,ArrayList将存储该特定长度的字符串。
采访者说这是使用HashMap的一种方式,但还有另一种方法,我不需要ArrayList或任何其他数据结构。在采访中,我无法提出任何解决方案,现在经过足够的谷歌搜索,我仍然没有任何东西。谁能告诉我如何才能解决这个问题呢?
谢谢!
答案 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();
来检索