我正在阅读' containers.map' Mathworks网站上的课程(https://www.mathworks.com/help/matlab/ref/containers.map-class.html和https://www.mathworks.com/help/matlab/ref/containers.map.iskey.html),我对组合地图感到困惑。
考虑以下示例:
keySet = {'Jan', 'Feb', 'Mar', 'Apr'};
valueSet = [327.2, 368.2, 197.6, 178.4];
mapObj = containers.Map(keySet,valueSet)
并输入以下内容检查会员资格:
keySet = {'Apr','May','Jun'};
tf = isKey(mapObj,keySet)
结果:
tf =
1 0 0
现在,如果我们想要组合两个地图,我们只需连接如下:
keySet = {'Jun','Jul','Aug'};
valueSet = [ 69.9, 32.3, 37.3];
newMap = containers.Map(keySet,valueSet);
mapObj = [mapObj; newMap];
并且,类似地,为了测试成员资格(不同的集合),我们可以写:
keySet = {'Jan','May','Aug','Dec'};
tf = isKey(mapObj,keySet)
并获得:
tf =
1 0 1 0
问题:现在,据我所知,containers.map使用哈希函数。为什么我们可以独立于mapObj构建newMap的地图 - 当我们查找键时,这会导致潜在的碰撞?