我正在构建一个哈希表,其中共享相同Byte数组值的多个String键被合并为一个具有多个键的值。这样,不会使用不同的值反复存储该值。添加带有值的键也应该覆盖任何具有相同名称的现有键,但如果它具有不同的键,则保留该值,但在没有其他键时将其删除。
编辑:如何构建此数据结构?例如,如果我用值插入“hello”,然后添加具有相同值的“World”,我希望结构为[[Hello,World],Value]而不是[Hello,Value] ,[世界,价值]。我尝试使用列表作为我的哈希键,但发现我无法回想起这个值。这是我的代码:
HashMap<List<String>, byte[]> map = new HashMap<List<String>, byte[]>();
public void storeByte (String id, int value) {
byte[] byteValue = new byte[value];
ArrayList<String> idlist = new ArrayList<String>();
idlist.add(id);
map.put(idlist, byteValue);
System.out.println(map);
}
public byte[] fetchByte(String id) {
ArrayList<String> idlistsearch = new ArrayList<String>();
idlistsearch.add(id);
byte[] output = map.get(id);
if(map.containsKey(idlistsearch)){
output = map.get(id);
} else {
return null;
}
return output;
我希望这是有道理的,
谢谢。
答案 0 :(得分:0)
我希望构建一个哈希表,其中共享相同Byte数组值的多个String键被合并为一个具有多个键的值。
这就是HashMap和Hashtable的工作原理。内置任何其他选项都没有。
定义时
byte[] bytes =
这是一个参考,而不是一个实际的对象。当您将此引用添加到地图时,您将添加此引用,并且可以根据需要添加多次,但只有一个副本。
如果我插入&#34;你好&#34;有价值,然后添加&#34;世界&#34;具有相同的值,
你可以做到
byte[] bytes =
map.put("Hello", bytes);
map.put("World", bytes);
这是两个键,只有一个值。