如何在matlab中创建对象数组的Map容器​​(HashMap)?

时间:2013-10-10 16:50:08

标签: arrays matlab hash hashmap hashset

HY!

我有一个Object数组:bs_ek(包含字段,方法的对象)。我想创建一个hashmap。

    for i= 1: length(bs_ek)
    k(i)=bs_ek(i).id;
    end


    rainfallMap = containers.Map(k, bs_ek)

但我收到此错误消息:

使用containers.Map时出错 指定的值类型与类型不匹配 期待这个容器。

我使用bs_ek元素创建了一个新的CELL数组:

    value2  = {bs_ek(1), bs_ek(2), bs_ek(3),bs_ek(4), bs_ek(5), bs_ek(6), bs_ek(7),    bs_ek(8), bs_ek(9), bs_ek(10), bs_ek(11) };

它的工作原理:

    rainfallMap = containers.Map(k, value2)

这制作了一张地图。但是bs_ek的长度没有固定(每次都不是11)而且我想在每次开始时改变这个数字。

提前致谢。

1 个答案:

答案 0 :(得分:1)

这很容易修复(假设id是有符号整数):

rainfallMap = containers.Map('KeyType', 'int32', 'ValueType', 'any');
for i = 1:length(bs_ek)
    rainfallMap(bs_ek(i).id) = bs_ek(i);
end

但是有一个问题我没有答案:上面的方法只会复制 bs_ek(i)到哈希映射,所以如果你以后更改bs_ek,那么这些更改不会反映在哈希映射中。